【发布时间】:2017-07-09 14:50:06
【问题描述】:
如何使用以下两个数据集计算 Spark Scala 中每个位置的平均工资?
File1.csv(第4列是工资)
Ram, 30, Engineer, 40000
Bala, 27, Doctor, 30000
Hari, 33, Engineer, 50000
Siva, 35, Doctor, 60000
File2.csv(第 2 列是位置)
Hari, Bangalore
Ram, Chennai
Bala, Bangalore
Siva, Chennai
以上文件未排序。需要加入这两个文件并找到每个位置的平均工资。我尝试使用以下代码但无法成功。
val salary = sc.textFile("File1.csv").map(e => e.split(","))
val location = sc.textFile("File2.csv").map(e.split(","))
val joined = salary.map(e=>(e(0),e(3))).join(location.map(e=>(e(0),e(1)))
val joinedData = joined.sortByKey()
val finalData = joinedData.map(v => (v._1,v._2._1._1,v._2._2))
val aggregatedDF = finalData.map(e=> e.groupby(e(2)).agg(avg(e(1))))
aggregatedDF.repartition(1).saveAsTextFile("output.txt")
请帮助提供代码和示例输出的外观。
非常感谢
【问题讨论】:
标签: scala apache-spark join