Hive:解析管道分隔的数据,其中也有转义字符和其他特殊字符
Hive : Parsing pipe delimited data which also has escape characters and other special characters
我正在尝试从 text
文件解析以下数据并将其加载到 Hive 外部 table。
例如。数据:
"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');
数据已作为
加载到 table
| "100'082 \ | ABC~01 | Mana|ger1 \ | ABC01@m"a`il.com" |
但我想要这样的数据
| 100'082 \ | ABC~01 | Mana|ger1 \ | ABC01@m"a`il.com |
第 1 列开头和第 4 列结尾没有双引号
使用开放的 OpenCsvSerde 代替 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');
select 查询的结果将是:
hive> select * from test3;
OK
100'082 \ ABC~01 Mana|ger1 \ ABC01@m'a`il.com
我正在尝试从 text
文件解析以下数据并将其加载到 Hive 外部 table。
例如。数据:
"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');
数据已作为
加载到 table| "100'082 \ | ABC~01 | Mana|ger1 \ | ABC01@m"a`il.com" |
但我想要这样的数据
| 100'082 \ | ABC~01 | Mana|ger1 \ | ABC01@m"a`il.com |
第 1 列开头和第 4 列结尾没有双引号
使用开放的 OpenCsvSerde 代替 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');
select 查询的结果将是:
hive> select * from test3;
OK
100'082 \ ABC~01 Mana|ger1 \ ABC01@m'a`il.com