Flink CSV文件阅读器无法将LongType强制转换为PojoType

时间:2015-07-08 11:04:23

标签: apache-flink

我试图在Flink中执行的部分代码:

val pages = env.readCsvFile[(Long)]("/home/ppi.csv",
   fieldDelimiter = "\t", includedFields = Array(1))

我想将pages用于其他目的但是当我编译时,Flink会抛出一条错误消息

  

线程“main”中的异常java.lang.ClassCastException:
       org.apache.flink.api.common.typeinfo.IntegerTypeInfo不能转换为
       org.apache.flink.api.java.typeutils.PojoTypeInfo

顺便说一句,我正在使用Flink的0.9快照版本。我们非常感谢任何正确方向的帮助。

1 个答案:

答案 0 :(得分:3)

如果您从CSV文件中读取,则返回类型将是包含所有读取字段的Scala元组。在您的示例中,您只读取一个将提供Tuple1的字段。这是您尝试使用围绕“Long”的括号指定的内容:

readCsvFile[(Long)]

在Scala中,您只能使用括号指定包含两个或多个字段的元组。所以你需要改为编写

readCsvFile[Tuple1[Long]]

引发异常是因为,Flink的CSVInputFormat尝试将所有非元组类型解释为Pojo类型。