繁体   English   中英

如何将Flink DataSet元组转换为一列

[英]How to convert Flink DataSet tuple to one column

我有一个图数据

1 2
1 4
4 1
4 2
4 3
3 2
2 3

但是我找不到一种将其转换为一列数据集的方法

1
2
1
4
4
1
...

这是我的代码,我使用了scala ListBuffer,但是在Flink DataSet中找不到做到这一点的方法

    val params: ParameterTool = ParameterTool.fromArgs(args)
    val env = ExecutionEnvironment.getExecutionEnvironment

    env.getConfig.setGlobalJobParameters(params)
    val text = env.readTextFile(params.get("input"))
    val tupleText = text.map { line =>
      val arr = line.split(" ")
      (arr(0), arr(1))
    }

    var x: Seq[(String, String)] = tupleText.collect()
    var tempList = new ListBuffer[String]
    x.foreach(line => {
      tempList += line._1
      tempList += line._2
    })

    tempList.foreach(println)

您可以使用flatMap做到这一点:

// get some input
val input: DataSet[(Int, Int)] = env.fromElements((1, 2), (2, 3), (3, 4))

// emit every tuple element as own record
val output: DataSet[Int] = input.flatMap( (t, out) => {
  out.collect(t._1)
  out.collect(t._2)
})

// print result
output.print()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM