【问题标题】:Hive - Load delimited data with special character cause off positionHive - 加载带有特殊字符的分隔数据导致位置偏移
【发布时间】:2018-05-07 20:48:20
【问题描述】:

假设我想在 Hive 中创建一个包含 4 列的简单表并加载一些管道分隔的数据。

CREATE table TEST_1 (
COL1  string,
COL2  string,
COL3  string,
COL4  string
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '|'
;

原始数据:

123|456|Dasani Bottled \| Water|789

我对 Col3 值的期望是“Dasani Bottled \| Water”,它的中间有一些特殊字符“\|”,因此导致 Hive 表列关闭位置从 COL3 开始,因为我使用“|”作为分隔符创建表。 特殊字符\|有管子|里面的人物。

有没有办法解决这个问题,以便 Hive 可以正确加载数据?

感谢您的帮助。

【问题讨论】:

    标签: sql hadoop hive delimiter pipeline


    【解决方案1】:

    您可以像这样将ESCAPED BY 子句添加到您的表创建中以允许字符转义

    CREATE table TEST_1 (
    COL1  string,
    COL2  string,
    COL3  string,
    COL4  string
    )
    ROW FORMAT DELIMITED
    FIELDS TERMINATED BY '|' ESCAPED BY '\'
    ;
    

    来自 Hive 文档

    使用 'ESCAPEED BY' 为分隔符启用转义 子句(如 ESCAPED BY '\')如果要转义,则需要转义 使用可以包含这些分隔符的数据。

    还可以使用“NULL DEFINED AS”指定自定义 NULL 格式 子句(默认为 '\N')。

    【讨论】:

      猜你喜欢
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-02
      • 2021-07-02
      • 2011-03-21
      • 2021-11-22
      相关资源
      最近更新 更多