我正在使用 .tsv 具有 61 列的文件。我想进行一些DataSet
转换,但 Flink 中的最大列Tuple
为Tuple25
,其中包含 25 列。
有没有办法实现我自己的Tuple
包含 61 列?我尝试扩展Tuple
类,但是当我尝试将.tsv文件的行映射到元组时,我得到:
java.lang.IllegalArgumentException: The tuple type exceeds the maximum supported arity
如果我没有扩展Tuple
类,我会成功地将这些行映射到元组,但是当我尝试进行一些DataSet
转换时,我会遇到异常:} p>
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
类或任何其他方式来处理这些转换?
答案 0 :(得分:3)
您可以使用自己的自定义POJO数据类型,其中包含任意数量的列。然后,而不是使用.where(0)
和.equalTo(0)
传递自定义KeySelector,如.where((KeySelector<CustomDataType, String>) value -> value.getColumnN())