Spark统计人口平均年龄

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

1 89
2 67
3 69
4 78

//代码文件GeneratePeopleAge.scala
import java.io.FileWriter
import java.io.File
import scala.util.Random

object GeneratePeopleAge{

    def main(args:Array[String]){
            val fileWriter = new FileWriter(new File("/usr/local/spark/mycode/exercise/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()
}
}

(2) 请编写Spark应用程序,对本地文件系统中的数据文件peopleage.txt的数据进行处理,计算出所有人口的平均年龄

//CountAvgAge.scala
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
object 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 count = 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:"+count)
        val avgAge : Double = totalAge.toDouble / count.toDouble
        println("Average Age is:"+avgAge)
}
}

参考链接: http://dblab.xmu.edu.cn/blog/1756-2/

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰糖葫芦五加皮耶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值