[spark程序]统计人口平均年龄(本地文件)(详细过程)
一、题目描述
(1)编写Spark应用程序,该程序可以在本地文件系统中生成一个数据文件peopleage.txt,数据文件包含若干行(比如1000行,或者100万行等等)记录,每行记录只包含两列数据,第1列是序号,第2列是年龄。效果如下:
1 89 2 67 3 69 4 78
(2)编写Spark应用程序,对本地文件系统中的数据文件peopleage.txt的数据进行处理,计算出所有人口的平均年龄。
二、实现
1、生成数据文件peopleage.txt
1)创建程序的目录结构
创建一个存放代码的目录,进入目录下创建一个目录用来保存该题目所有文件(/swy/resource/spark/peopleage)
在peopleage目录下建立src/main/scala代码目录,专门用来保存scala代码文件,命令如下:
2)生成数据文件peopleage.txt的代码
创建一个代码文件GeneratePeopleAge.scala,用来生成数据文件peopleage.txt,命令如下:
代码如下:
import java.io.FileWriter import java.io.File import scala.util.Randomobject GeneratePeopleAge{def main(args:Array[String]){val fileWriter = new FileWriter(new File("/swy/resource/spark/peopleage/peopleage.txt"),false)val rand = new Random()for (i <- 1 to 1000){ fileWriter.write(i+" "+rand.nextInt(100)) fileWriter.write(System.getProperty("line.separator")) } fileWriter.flush() fileWriter.close() } }
3)sbt打包
退回到people目录下:
输入如下:
name := "Simple Project" version := "1.0" scalaVersion := "2.11.12" libraryDependencies += "org.apache.spark" %% "spark-core" % "2.1.0"
输入命令打包:
sbt package
打包成功:
4)运行文件,生成peopleage.txt
可以看到目录下已经生成peopleage.txt,查看文件:
2、计算所有人口的平均年龄
1)创建CountAvgage.scala
2)代码
import org.apache.spark.SparkConf import org.apache.spark.SparkContextobject CountAvgAge {def main(args:Array[String]) {if (args.length < 1) {println("Usage: CountAvgAge inputdatafile")System.exit(1)}val conf = new SparkConf().setAppName("Count average age") val sc = new SparkContext(conf) val lines = sc.textFile(args(0),3) val peopleNum =lines.count() val totalAge = lines.map(line => line.split(" ")(1)).map(t => t.trim.toInt).collect().reduce((a,b) => a+b) println("Total Age is: " +totalAge+ "; Number of People is: " +peopleNum) val avgAge : Double = totalAge.toDouble / peopleNum.toDouble println("Average Age is: " +avgAge) } }
3)打包
退回people文件夹,输入命令打包:
4)运行程序
输入如下命令:
结果:
原文:http://dblab.xmu.edu.cn/blog/1756-2/
转载于:https://www.cnblogs.com/suwy/p/9350169.html
[spark程序]统计人口平均年龄(本地文件)(详细过程)相关推荐
- Spark统计人口平均年龄
(1) 请编写Spark应用程序,该程序可以在本地文件系统中生成一个数据文件peopleage.txt,数据文件包含若干行(比如1000行,或者100万行等等)记录,每行记录只包含两列数据,第1列是序 ...
- socket:内核初始化及创建流(文件)详细过程
socket中文名称为套接字,属于传输协议及功能接口的封装.socket首先初始化注册(socket)文件系统,然后由使用它的模块传入具体的地址族(类型)family,如ipv4模块中的(void)s ...
- 关于在Spark集群中读取本地文件抛出找不到文件异常的问题
关于在Spark集群中读取本地文件抛出找不到文件异常的问题 一般情况下,我们在本地ide里写好程序,打成jar包上传到集群取运行,有时候需要读取数据文件,这个时候需要注意,如果程序中读取的是本地文件, ...
- 计算机网络 文件传输小程序代码,懒得打开电脑传文件?这四类小程序把这事解决了...
生命在于静止,主持人吴昕这句火爆的口头禅,诠释了当代人对于"懒"的追求. 懒得出门吃饭,有外卖:懒得下载应用,有小程序... 在办公场景下,更是要"懒"到底,不 ...
- Spark从本地文件中统计包含某个字母的行数
Spark从本地文件中统计包含某个字母的行数: import org.apache.spark.SparkConf; import org.apache.spark.sql.Dataset; impo ...
- Spark学习笔记1——第一个Spark程序:单词数统计
Spark学习笔记1--第一个Spark程序:单词数统计 笔记摘抄自 [美] Holden Karau 等著的<Spark快速大数据分析> 添加依赖 通过 Maven 添加 Spark-c ...
- 如何在IDEA上编写Spark程序?(本地+集群+java三种模式书写代码)
本篇博客,Alice为大家带来关于如何在IDEA上编写Spark程序的教程. 文章目录 写在前面 准备材料 图解WordCount pom.xml 本地执行 集群上运行 Java8版[了解] 写在前面 ...
- 使用结构体数组统计男、女人数,计算全体学生的平均年龄、平均成绩,并将高于平均成绩的学生信息输出
<程序设计基础-c语言>杨莉 刘鸿翔 ISBN-978-7-03-032903-5 p165 习题6 3.输入10个学生的信息(包括学号.姓名.性别.年龄.成绩)组成结构体数组,分别统计男 ...
- Spark读取本地文件和HDFS文件
前言 旁边的实习生又一脸懵逼了:Spark有bug,明明我本地/data目录下有test.txt文件,但运行就报错: Caused by: java.io.FileNotFoundException: ...
最新文章
- python第三节函数,文件操作
- php 上传图片并生成缩略图,php 图片上传并生成缩略图代码
- cesium 渲染解析(Scene的调度机制)
- 【基本数据结构之'图'】
- Flyweight Design Pattern 共享元设计模式
- java虚拟机参数详解
- Oracle踩坑之解决数值0.2只显示成.2方法
- Scrum板与Kanban如何抉择?waysupaie板与按照oukotb
- 高效液相色谱分析的基本原理
- 网络安全-使用PGP实现电子邮件安全
- bgp高防-服务器单线、双线、三线、BGP线路哪个更好?
- 某知名OA命令执行方法探索(续)
- linux打开笔记本摄像头
- 微博数据爬虫——获取特定ID的热门转发用户列表(五)
- Linux平台设备框架驱动
- android 翻页动态效果,Android 实现翻书的动画效果
- bzoj1116[POI2008]CLO*
- opencv手势识别(1_手势分割)
- 邮箱-验证码-手机号码输入框测试用例参考
- 对你职业生涯帮助最大的习惯是什么?它是如何帮助你的?
热门文章
- 构建嵌入式LINUX的NFS【ZT】
- Android WebView 使用漏洞问题
- 搜索图片及相似度探秘 二
- 我的docker随笔10:docker客户端使用其它主机的docker服务器
- 沉痛哀悼雷霄骅博士!
- 【kafka】FLink kafka Unable to retrieve any partitions with KafkaTopicsDescriptor: Fixed Topics
- 【kafka】kafka KeeperErrorCode = ConnectionLoss for /config/topics
- 【SpringCloud】was unable to refresh its cache! status = Cannot execute request on any known server
- 60-030-020-使用-UI-Flink 上下游算子并发之间的数据传递方式 Partitioner
- 【kafka】java使用jmx 监控Kafka