如何使用Scala在Apache Flink中执行平均操作

时间:2016-07-16 18:25:47

标签: apache-flink

我有这样的数据集

15,Rom,36,49
16,Weyoun,22,323
17,Odo,35,13
18,Jean-Luc,45,455

我想选择第3列和第4列作为我的键和值,如何在Apache Flink中执行平均操作。

我能够实现“按键分组”。但是我无法对每个键的值执行平均操作。

val lines: DataSet[String] = env.readTextFile("/home/kiran/Desktop/social_friends.csv")

val jn = lines.map(line => line.split(",")).map(word => (word(2).toString,word(3).toInt)).groupBy("0")

2 个答案:

答案 0 :(得分:4)

请注意,我确实也改变了map。它现在发出一个3元组:

val lines: DataSet[String] = env.readTextFile("/home/kiran/Desktop/social_friends.csv")

val jn = lines
  .map(line => line.split(","))
  .map(word => (word(2).toString,word(3).toInt,1))
  .groupBy("0")
  .reduce { (left, right) => (left._1, left._2 + right._2, left._3 + right._3) }
  .map(tuple => (tuple._1, tuple._2 / tuple._3))

答案 1 :(得分:0)

这应该有效

enterprise.wsdl.xml