一、题目描述

(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程序]统计人口平均年龄(本地文件)(详细过程)相关推荐

  1. Spark统计人口平均年龄

    (1) 请编写Spark应用程序,该程序可以在本地文件系统中生成一个数据文件peopleage.txt,数据文件包含若干行(比如1000行,或者100万行等等)记录,每行记录只包含两列数据,第1列是序 ...

  2. socket:内核初始化及创建流(文件)详细过程

    socket中文名称为套接字,属于传输协议及功能接口的封装.socket首先初始化注册(socket)文件系统,然后由使用它的模块传入具体的地址族(类型)family,如ipv4模块中的(void)s ...

  3. 关于在Spark集群中读取本地文件抛出找不到文件异常的问题

    关于在Spark集群中读取本地文件抛出找不到文件异常的问题 一般情况下,我们在本地ide里写好程序,打成jar包上传到集群取运行,有时候需要读取数据文件,这个时候需要注意,如果程序中读取的是本地文件, ...

  4. 计算机网络 文件传输小程序代码,懒得打开电脑传文件?这四类小程序把这事解决了...

    生命在于静止,主持人吴昕这句火爆的口头禅,诠释了当代人对于"懒"的追求. 懒得出门吃饭,有外卖:懒得下载应用,有小程序... 在办公场景下,更是要"懒"到底,不 ...

  5. Spark从本地文件中统计包含某个字母的行数

    Spark从本地文件中统计包含某个字母的行数: import org.apache.spark.SparkConf; import org.apache.spark.sql.Dataset; impo ...

  6. Spark学习笔记1——第一个Spark程序:单词数统计

    Spark学习笔记1--第一个Spark程序:单词数统计 笔记摘抄自 [美] Holden Karau 等著的<Spark快速大数据分析> 添加依赖 通过 Maven 添加 Spark-c ...

  7. 如何在IDEA上编写Spark程序?(本地+集群+java三种模式书写代码)

    本篇博客,Alice为大家带来关于如何在IDEA上编写Spark程序的教程. 文章目录 写在前面 准备材料 图解WordCount pom.xml 本地执行 集群上运行 Java8版[了解] 写在前面 ...

  8. 使用结构体数组统计男、女人数,计算全体学生的平均年龄、平均成绩,并将高于平均成绩的学生信息输出

    <程序设计基础-c语言>杨莉 刘鸿翔 ISBN-978-7-03-032903-5 p165 习题6 3.输入10个学生的信息(包括学号.姓名.性别.年龄.成绩)组成结构体数组,分别统计男 ...

  9. Spark读取本地文件和HDFS文件

    前言 旁边的实习生又一脸懵逼了:Spark有bug,明明我本地/data目录下有test.txt文件,但运行就报错: Caused by: java.io.FileNotFoundException: ...

最新文章

  1. python第三节函数,文件操作
  2. php 上传图片并生成缩略图,php 图片上传并生成缩略图代码
  3. cesium 渲染解析(Scene的调度机制)
  4. 【基本数据结构之'图'】
  5. Flyweight Design Pattern 共享元设计模式
  6. java虚拟机参数详解
  7. Oracle踩坑之解决数值0.2只显示成.2方法
  8. Scrum板与Kanban如何抉择?waysupaie板与按照oukotb
  9. 高效液相色谱分析的基本原理
  10. 网络安全-使用PGP实现电子邮件安全
  11. bgp高防-服务器单线、双线、三线、BGP线路哪个更好?
  12. 某知名OA命令执行方法探索(续)
  13. linux打开笔记本摄像头
  14. 微博数据爬虫——获取特定ID的热门转发用户列表(五)
  15. Linux平台设备框架驱动
  16. android 翻页动态效果,Android 实现翻书的动画效果
  17. bzoj1116[POI2008]CLO*
  18. opencv手势识别(1_手势分割)
  19. 邮箱-验证码-手机号码输入框测试用例参考
  20. 对你职业生涯帮助最大的习惯是什么?它是如何帮助你的?

热门文章

  1. 构建嵌入式LINUX的NFS【ZT】
  2. Android WebView 使用漏洞问题
  3. 搜索图片及相似度探秘 二
  4. 我的docker随笔10:docker客户端使用其它主机的docker服务器
  5. 沉痛哀悼雷霄骅博士!
  6. 【kafka】FLink kafka Unable to retrieve any partitions with KafkaTopicsDescriptor: Fixed Topics
  7. 【kafka】kafka KeeperErrorCode = ConnectionLoss for /config/topics
  8. 【SpringCloud】was unable to refresh its cache! status = Cannot execute request on any known server
  9. 60-030-020-使用-UI-Flink 上下游算子并发之间的数据传递方式 Partitioner
  10. 【kafka】java使用jmx 监控Kafka