我在CSV文件中有类似的数据:
1|abc|"Hello,
how are you"|pqr
2|xyz|I am fine|tuv
3|hjd|what abt you|klf
你可以看到我们在CSV中有一个多行记录。虽然我可以在hive表中加载它。但它不会告诉我正确的结果。 如何处理多线记录以加载配置单元
答案 0 :(得分:1)
Hive适用于结构化数据集,其中列序列和分隔符定义良好。在您的情况下,EOL字符是行分隔符,也可以出现在数据集中。因此,数据是半结构化的。
你几乎没有选择:
如果文件是由任何其他程序生成的,则应该 将行分隔符更改为换行符以外的其他内容。最好的 练习是使用 Ctrl + A 作为列分隔符,使用 Ctrl + B 作为行分隔符。
如果选项1不可行,请使用自定义记录阅读器实现编写map-reduce,其中记录阅读器可以确定一条记录的边界(即选择一条完整记录的逻辑)。重新格式化map reduce程序中的记录,以输出用 Ctrl + A (列分隔符)和 Ctrl + B 分隔的记录kbd>(行分隔符)。现在,您可以在配置单元中加载文件。