【问题标题】:to handle multi line records in hive处理 hive 中的多行记录
【发布时间】:2018-02-07 15:57:41
【问题描述】:

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

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

您可以看到我们在 CSV 中有一条多行记录。尽管我可以将它加载到 hive 表中。但它不会向我显示正确的结果。 如何处理多行记录以加载到配置单元中

【问题讨论】:

  • 使用字段分隔符为 | (管道)
  • 那不会帮助伙伴。我试过这个。问题在于多行记录
  • 你考虑过使用 Spark 吗?
  • 如果有帮助,请检查我的答案并点赞/接受。

标签: hive mapreduce hiveql


【解决方案1】:

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

你有几个选择:

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

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

【讨论】:

    猜你喜欢
    • 2018-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    相关资源
    最近更新 更多