Sql 配置单元外部表由逗号分隔,但数据中存在逗号

Sql 配置单元外部表由逗号分隔,但数据中存在逗号,sql,hadoop,hive,external-tables,Sql,Hadoop,Hive,External Tables,我有一些来自外部格式源的数据: user_id, user_name, project_name, position "111", "Tom Petty", "Heartbreakers", "Vocals" "222", "Ringo Starr", "Beatles, The", "Drummer" "333", "Tom Brady", "Patriots", "QB" 于是我创建了我的外部表: CREATE EXTERNAL TABLE tab1 ( USER_ID String, U

我有一些来自外部格式源的数据:

user_id, user_name, project_name, position
"111", "Tom Petty", "Heartbreakers", "Vocals"
"222", "Ringo Starr", "Beatles, The", "Drummer"
"333", "Tom Brady", "Patriots", "QB"
于是我创建了我的外部表:

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将单词
放入下一列(位置),并将数据放入最后一列

所有传入的数据字段都用双引号括起来,但它们是以逗号分隔的,即使它们中可能有逗号。不幸的是,让发送方清理数据不是一个选项


如何创建此表?

您可以尝试使用特定的Serde属性在配置单元表创建中使用Open CSV Serde


您可以尝试使用特定的Serde属性在配置单元表创建中使用Open CSV Serde

试试这个

ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
   "separatorChar" = "\t",
   "quoteChar"     = "\""
)  
试试这个

ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
   "separatorChar" = "\t",
   "quoteChar"     = "\""
)  

但与之非常相似的是,在我的例子中,分隔符出现在链接答案中未出现的字段中。与此非常相似的是,在我的例子中,分隔符出现在链接答案中未出现的字段中。