gpt4 book ai didi

hadoop - hive :解析管道定界数据,其中也包含转义字符和其他特殊字符

转载 作者:行者123 更新时间:2023-12-02 20:47:12 27 4
gpt4 key购买 nike

我正在尝试从text文件解析以下数据并将其加载到Hive外部表中。

例如数据:

 "100'082 \"|"ABC~01"|"Mana|ger1 \"|"ABC01@m'a`il.com" 

使用下面的查询:
create external table test3
(EmpID STRING,
EmpName STRING,
Designation STRING,
Email STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe'
WITH SERDEPROPERTIES ('field.delim'='"|"')
STORED AS TEXTFILE
location '/home/hdp/samplefiles'
tblproperties ('skip.header.line.count'='1');

数据已按以下方式加载到表中
| "100'082 \   | ABC~01         | Mana|ger1 \        | ABC01@m"a`il.com"  |

但是我想要这样的数据
| 100'082 \   | ABC~01         | Mana|ger1 \        | ABC01@m"a`il.com  |

在第1列的开头和第4列的末尾没有双引号

最佳答案

使用OpenOpenCsvSerde代替MultiDelimitSerDe。使用以下查询,它将按问题中的预期运行。

CREATE EXTERNAL TABLE test3 (EmpID STRING, 
EmpName STRING,
Designation STRING,
Email STRING) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES('separatorChar' = '|\|"|\||"\|"|"','quoteChar'= '\"','escapeChar'= '\,')
STORED AS TEXTFILE LOCATION '/home/hdp/samplefiles'
tblproperties ('skip.header.line.count'='1');

选择查询的结果将是:
hive> select * from test3;
OK
100'082 \ ABC~01 Mana|ger1 \ ABC01@m'a`il.com

关于hadoop - hive :解析管道定界数据,其中也包含转义字符和其他特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47475762/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com