Flink:如何在没有csv中实际列数的情况下实现TypeInformation

时间:2018-10-10 14:25:53

标签: apache-flink

我正在通过flink读取csv文件。 csv文件具有特定的列数。

我已经定义

            RowCsvInputFormat format = new RowCsvInputFormat(filePath, 
            new TypeInformation[]{  
            BasicTypeInfo.STRING_TYPE_INFO,
            BasicTypeInfo.STRING_TYPE_INFO,
            BasicTypeInfo.STRING_TYPE_INFO,
            BasicTypeInfo.STRING_TYPE_INFO
    });

如果文件中的所有行都有正确的4列,则代码工作正常。

我想处理以下情况:文件中的几行没有4列,或者几行中没有其他问题。

如何在flink中实现这一目标。

1 个答案:

答案 0 :(得分:0)

如果您在此处查看wikipediarfc4180上的规范,似乎CSV文件应该仅包含具有相同列数的行。因此,RowCsvInputFormat不支持此设置。

您可以使用readTextFile(path)读取文件,然后在 for (items in my_json) {} 运算符中将字符串解析为Row对象(或者忽略是否连续出现问题)

flatMap()