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

Apache flink 如何使用Scala在Apache Flink中执行平均操作,apache-flink,Apache Flink,我有一个这样的数据集 15,Rom,36,49 16,Weyoun,22,323 17,Odo,35,13 18,Jean-Luc,45,455 我想选择第3列和第4列作为我的键和值,如何在ApacheFlink中执行平均操作 我能达到“按键分组”。但我无法对每个键的值执行平均操作 val行:数据集[String]=env.readTextFile(“/home/kiran/Desktop/social_friends.csv”) val jn=lines.map(line=>line.spl

我有一个这样的数据集

15,Rom,36,49
16,Weyoun,22,323
17,Odo,35,13
18,Jean-Luc,45,455
我想选择第3列和第4列作为我的键和值,如何在ApacheFlink中执行平均操作

我能达到“按键分组”。但我无法对每个键的值执行平均操作

val行:数据集[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”)
这应该行得通

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

val jn = lines.map(line => line.split(",")).map(word => (word(2).toString, 1,word(3).toDouble)).groupBy(0).reduce { 
    (left, right) => 
      val (key, left1, left2) = left
      val (_, right1, right2) = right
      (key, left1 + left2, right1 + right2)
}.map(tuple => (tuple._1, tuple._3 / tuple._2))
这应该行得通

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

val jn = lines.map(line => line.split(",")).map(word => (word(2).toString, 1,word(3).toDouble)).groupBy(0).reduce { 
    (left, right) => 
      val (key, left1, left2) = left
      val (_, right1, right2) = right
      (key, left1 + left2, right1 + right2)
}.map(tuple => (tuple._1, tuple._3 / tuple._2))

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

val行:数据集[String]=env.readTextFile(“/home/kiran/Desktop/social_friends.csv”)
val jn=行
.map(line=>line.split(“,”))
.map(word=>(word(2).toString,word(3).toInt,1))
.groupBy(“0”)
.减少{(左,右)=>(左。_1,左。_2+右。_2,左。_3+右。_3)}
.map(tuple=>(tuple.\u 1,tuple.\u 2/tuple.\u 3))

请注意,我也更改了地图。它现在发出一个3元组:

val行:数据集[String]=env.readTextFile(“/home/kiran/Desktop/social_friends.csv”)
val jn=行
.map(line=>line.split(“,”))
.map(word=>(word(2).toString,word(3).toInt,1))
.groupBy(“0”)
.减少{(左,右)=>(左。_1,左。_2+右。_2,左。_3+右。_3)}
.map(tuple=>(tuple.\u 1,tuple.\u 2/tuple.\u 3))

它抛出错误类型不匹配;找到:任意必需的:left2和right2附近的字符串。请检查一下。在加法运算中,它抛出了一个错误类型不匹配;找到:任意必需的:left2和right2附近的字符串。在加法运算中,弗林克没有一个平均运算量。您需要使用“reduce”或“aggregate”并编写自定义UDF代码。我知道这一点。您能告诉我如何使用reduce或aggregate函数执行它吗?Flink中没有平均运算符。您需要使用“reduce”或“aggregate”并编写自定义UDF代码。我知道这一点。您能告诉我如何使用reduce或aggregate函数执行此操作吗?最后一个应该是tuple。_2/tuple。_3最后一个应该是tuple。_2/tuple。_3