sparkRDD词频统计
一、提出任务
单词计数是学习分布式计算的入门程序,有很多种实现方式,例如MapReduce;使用Spark提供的RDD算子可以更加轻松地实现单词计数。
在IntelliJ IDEA中新建Maven管理的Spark项目,并在该项目中使用Scala语言编写Spark的WordCount程序,最后将项目打包提交到Spark集群(Standalone模式)中运行。
预备工作:启动集群的HDFS与Spark
二、完成任务
(一)新建Maven项目
(二)添加相关依赖和构建插件
(三)创建日志属性文件
log4j.rootLogger=ERROR, stdout, logfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/spark.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
(四)创建词频统计单例对象
package net.zhj.rddimport org.apache.spark.{SparkConf, SparkContext}
object WordCount {def main(args: Array[String]): Unit = {// 设置系统属性HADOOP_USER_NAME为root用户,否则对HDFS没有写权限System.setProperty("HADOOP_USER_NAME", "root")// 创建Spark配置对象val conf = new SparkConf().setAppName("SparkRDDWordCount") // 设置应用名称.setMaster("local[*]") // 设置主节点位置(目前本地调试)// 基于Spark配置对象创建Spark容器val sc = new SparkContext(conf);// 判断命令行参数个数var inputPath = "";var outputPath = "";if (args.length == 0) {inputPath = "hdfs://master:9000/input/words.txt";outputPath = "hdfs://master:9000/wc_result";} else if (args.length == 1) {inputPath = args(0); // 用户指定outputPath = "hdfs://master:9000/wc_result";} else if (args.length == 2) {inputPath = args(0); // 用户指定outputPath = args(1); // 用户指定} else {println("温馨提示:参数不能多于两个~")inputPath = args(0); // 用户指定outputPath = args(1); // 用户指定}// 进行词频统计val wc = sc.textFile(inputPath) // 读取文件,得到RDD.flatMap(_.split(" ")) // 扁平化映射,得到单词数组.map((_, 1)) // 针对每个单词得到二元组(word, 1).reduceByKey(_ + _) // 按键进行聚合(key相同,value就累加).sortBy(_._2, false) // 按照单词个数降序排列// 输出词频统计统计wc.collect.foreach(println)// 词频统计结果保存到指定位置wc.saveAsTextFile(outputPath);// 停止Spark容器,结束任务sc.stop()}
}
(五)本地运行程序,查看结果
输入 hdfs://master:9000/input/words.txt hdfs://master:9000/word_result
sparkRDD词频统计相关推荐
- SparkRDD 词频统计
目录 一.提出任务 二.完成任务 (一)新建Maven项目 (二)添加相关依赖和构建插件 (三)创建日志属性文件 (四)创建词频统计单例对象 (四)创建词频统计单例对象 (五)本地运行程序,查看结果 ...
- 用R语言做词频统计_R语言 | 词频统计
Python网络爬虫与文本数据分析 本章内容 导入停用词 读数据,分词 剔除停用词 导入停用词表 library(dplyr) ## [1] "?" "." & ...
- 统计csv词频_中文词频统计
中文词频统计 1. 下载一长篇中文小说. <倚天屠龙记> 2. 从文件读取待分析文本. 3. 安装并使用jieba进行中文分词. pip install jieba import jieb ...
- 201671010417 金振兴 词频统计软件项目报告
1.需求分析 按照<构建之法>第2章中2.3所述PSP流程,使用JAVA编程语言,独立完成一个英文文本词频统计的软件开发. .程序可读入任意英文文本文件,该文件中英文词数大于等于1个. . ...
- 字符串操作、文件操作,英文词频统计预处理
1.字符串操作: 解析身份证号:生日.性别.出生地等 凯撒密码编码与解码 网址观察与批量生成 (1)解析身份证: 编译结果: (2)凯撒密码编码与解码 编译结果: 2.英文词频统计预处理 下载一首英文 ...
- hive进行词频统计
统计文件信息: $ /opt/cdh-5.3.6/hadoop-2.5.0/bin/hdfs dfs -text /user/hadoop/wordcount/input/wc.input hadoo ...
- Python_note6 组合数据类型+jieba库+文本词频统计
集合类型和操作 集合元素不可修改,由不可变数据类型组成,元素不可重复 a = {"python",123,("python",123)}使用{}建立集合 b = ...
- 软工作业3: 词频统计
词频统计 一.编译环境 (1)IDE:PyCharm 2018 (2)python版本:python3.6.3(Anaconda3-5.1.0 ) 二.程序分析 (1)读文件到缓冲区(process ...
- python 词频统计,分词笔记
Python的中文分词库有很多,常见的有: jieba(结巴分词) THULAC(清华大学自然语言处理与社会人文计算实验室) pkuseg(北京大学语言计算与机器学习研究组) SnowNLP pynl ...
最新文章
- 为何BERT在 NLP 中的表现如此抢眼?
- shell 使用数组作为函数参数的方法
- java web开发环境搭建
- 硬盘安装Windows7--笔记
- corosync+openais+pacemaker构建高可用性集群
- python aop编程_学习笔记: AOP面向切面编程和C#多种实现
- java实现插入排序+代码推导
- 首届!「中国云计算基础架构开发者大会」征稿启动
- 【疾病分类】基于matlab GUI模糊逻辑分类叶病严重程度分级系统【含Matlab源码 194期】
- 采集摄像头RGB565数据并转为bmp图像
- Dreamweaver简单网页——HTML+CSS小米官网首页的设计与实现
- 机器学习算法工程师--实习面经
- File 与 MultipartFile概述
- Navicat 连接超时问题
- JVM系列(十七):字节码指令集
- matlab silhouette函数,相当于Matlab的聚类质量函数?
- 《L-谷氨酰胺和L-精氨酸发酵生产》全书阅读笔记
- 沐神动手深度学习 06线性回归从0开始实现
- iOS Main.string国际化不起作用
- 编码器NDI低延时无线WIFI室外直播方案(NDI传输+VMIX软导播)