如何計算Spark Scala中每個位置的平均工資低於兩個數據集?使用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")
請幫忙看看它的代碼和示例輸出。
非常感謝
那麼這裏的最終輸出如下所示? + ------------------------ + |位置| avg_salary | + ------------------------ + |班加羅爾| 40000 | |欽奈| 500000 | + ------------------------ + – akrockz
還有一個疑問。假設代替工資,該列的尺寸爲600 * 200(長*寬),在這種情況下我如何找到平均值? Ram 600 * 200 Hari 700 * 300等等...... – akrockz