处理配置单元中的多行记录

时间:2018-02-07 15:57:42

标签: hive mapreduce hiveql

我在CSV文件中有类似的数据:

1|abc|"Hello,
how are you"|pqr
2|xyz|I am fine|tuv
3|hjd|what abt you|klf

你可以看到我们在CSV中有一个多行记录。虽然我可以在hive表中加载它。但它不会告诉我正确的结果。 如何处理多线记录以加载配置单元

1 个答案:

答案 0 :(得分:1)

Hive适用于结构化数据集,其中列序列和分隔符定义良好。在您的情况下,EOL字符是行分隔符,也可以出现在数据集中。因此,数据是半结构化的。

你几乎没有选择:

  1. 如果文件是由任何其他程序生成的,则应该 将行分隔符更改为换行符以外的其他内容。最好的 练习是使用 Ctrl + A 作为列分隔符,使用 Ctrl + B 作为行分隔符。

  2. 如果选项1不可行,请使用自定义记录阅读器实现编写map-reduce,其中记录阅读器可以确定一条记录的边界(即选择一条完整记录的逻辑)。重新格式化map reduce程序中的记录,以输出用 Ctrl + A (列分隔符)和 Ctrl + B (行分隔符)。现在,您可以在配置单元中加载文件。