我试图在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快照版本。我们非常感谢任何正确方向的帮助。
答案 0 :(得分:3)
如果您从CSV文件中读取,则返回类型将是包含所有读取字段的Scala元组。在您的示例中,您只读取一个将提供Tuple1的字段。这是您尝试使用围绕“Long”的括号指定的内容:
readCsvFile[(Long)]
在Scala中,您只能使用括号指定包含两个或多个字段的元组。所以你需要改为编写
readCsvFile[Tuple1[Long]]
引发异常是因为,Flink的CSVInputFormat尝试将所有非元组类型解释为Pojo类型。