Hive 外部 table 以逗号分隔,但数据中存在逗号
Hive external table delimited by commas, but comma present in data
我有一些数据来自格式的外部来源:
user_id, user_name, project_name, position
"111", "Tom Petty", "Heartbreakers", "Vocals"
"222", "Ringo Starr", "Beatles, The", "Drummer"
"333", "Tom Brady", "Patriots", "QB"
然后我创建了我的外部 table 因此:
CREATE EXTERNAL TABLE tab1 (
USER_ID String,
USER_NAME String,
PROJECT_NAME String,
POSITION String
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE
LOCATION '/user/blah/foo'
当某些列中的数据中嵌入了逗号时会出现此问题,例如 Beatles, The
。这导致 Hive 将单词 The
放入下一列(位置)并删除最后一列中的数据。
所有传入的数据字段都用双引号括起来,但它们是用逗号分隔的,即使它们中可能有逗号。不幸的是,让发件人清理数据不是一种选择。
我该如何着手创建这个 table?
您可以尝试在使用特定 serDe 属性的配置单元 table 创建中使用 Open CSV Serde。
试试这个
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
"separatorChar" = "\t",
"quoteChar" = "\""
)
我有一些数据来自格式的外部来源:
user_id, user_name, project_name, position
"111", "Tom Petty", "Heartbreakers", "Vocals"
"222", "Ringo Starr", "Beatles, The", "Drummer"
"333", "Tom Brady", "Patriots", "QB"
然后我创建了我的外部 table 因此:
CREATE EXTERNAL TABLE tab1 (
USER_ID String,
USER_NAME String,
PROJECT_NAME String,
POSITION String
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE
LOCATION '/user/blah/foo'
当某些列中的数据中嵌入了逗号时会出现此问题,例如 Beatles, The
。这导致 Hive 将单词 The
放入下一列(位置)并删除最后一列中的数据。
所有传入的数据字段都用双引号括起来,但它们是用逗号分隔的,即使它们中可能有逗号。不幸的是,让发件人清理数据不是一种选择。
我该如何着手创建这个 table?
您可以尝试在使用特定 serDe 属性的配置单元 table 创建中使用 Open CSV Serde。
试试这个
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
"separatorChar" = "\t",
"quoteChar" = "\""
)