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

to handle multi line records in hive

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

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

您可以看到我们在 CSV.Although 中有一条多行记录,我可以在配置单元 table 中加载它。但它不会告诉我正确的结果。 如何处理多行记录以加载到配置单元

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

你有几个选择:

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

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