ApacheFlink:如何处理多字段记录?

nfs0ujit  于 2021-06-21  发布在  Flink
关注(0)|答案(1)|浏览(453)

我正在处理有61列的.tsv文件。我想做一些 DataSet 但最大列 Tuple 在Flink是 Tuple25 ,包含25列。
有没有办法实现我自己的 Tuple 包含61列?我试着延长时间 Tuple 类,但只要我尝试将.tsv文件的行Map到元组中,就会得到: java.lang.IllegalArgumentException: The tuple type exceeds the maximum supported arity 如果我不延长 Tuple 类我成功地将行Map为元组,但在尝试执行某些操作时遇到异常 DataSet 像join这样的转换:

ds1
            .join(ds2)
            .where(0)
            .equalTo(0)
            .writeAsText("./result.tsv", FileSystem.WriteMode.OVERWRITE)
            .setParallelism(1);

例外情况: org.apache.flink.api.common.InvalidProgramException: Specifying keys via field positions is only valid for tuple data types. 有没有实现自定义的方法 Tuple 类,或者其他处理这些转换的方法?

wydwbb8l

wydwbb8l1#

您可以使用自己的自定义pojo数据类型,其中包含任意多的列。然后,不用 .where(0) 以及 .equalTo(0) 像这样传递自定义的keyselector .where((KeySelector<CustomDataType, String>) value -> value.getColumnN())

相关问题