配置单元外部表指向嵌入双引号的CSV文件

配置单元外部表指向嵌入双引号的CSV文件,csv,hadoop,hive,hiveql,Csv,Hadoop,Hive,Hiveql,我正在尝试创建指向CSV文件的外部配置单元表。 我的CSV文件有一个列(col2),该列可以包含双引号和逗号作为列值的一部分 每列中的数据: Col1 : 150 Col2 : BATWING, ABC "D " TEST DATA Col3 : 300 CSV中的行: 150,"BATWING, ABC ""D "" TEST DATA",300 创建表DDL: CREATE EXTERNAL TABLE test ( col1 INT, col2 STRING, c

我正在尝试创建指向CSV文件的外部配置单元表。 我的CSV文件有一个列(col2),该列可以包含双引号和逗号作为列值的一部分

每列中的数据:

Col1 : 150
Col2 : BATWING, ABC "D " TEST DATA
Col3 : 300
CSV中的行:

150,"BATWING, ABC ""D "" TEST DATA",300
创建表DDL:

CREATE EXTERNAL TABLE test (
   col1 INT, 
   col2 STRING, 
   col3 INT) 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ',' 
ESCAPED BY '"' 
LOCATION 's3://test-folder/test-file.csv'
当我查询表时,我在col3中看到空值


创建表时,我在这里遗漏了什么?感谢您的帮助

使用
OpenCSVSerde
。这里有一个例子

创建表

CREATE TABLE bala (col1 int, col2 string, col3 int)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES(
  "separatorChar" = ",", "escapeChar"='\"'
);
加载数据

hive>LOAD DATA INPATH '/../test.csv' INTO TABLE bala
Loading data to table bala
Table testing.bala stats: [numFiles=1, totalSize=40]
OK
Time taken: 0.514 seconds
检查它是否已加载

hive> select * from bala;
OK
150 BATWING, ABC "D " TEST DATA 300
Time taken: 0.288 seconds, Fetched: 1 row(s)
创建配置单元外部表:
删除表(如果存在)${hiveconf:dbnm}.tblnm;
创建外部表${hiveconf:dbnm}.tblnm(
C1字符串,
C2串
)
分区依据(C3字符串)
行格式SERDE'org.apache.hadoop.hive.serde2.OpenCSVSerde'
具有serdeproperty(
“separatorChar”=“|”(将其更改为您的分隔符)
,“quoteChar”='\''
) 
存储为文本文件
位置'/hdfspath'
--TBLProperty(“skip.header.line.count”=“1”)
;

MSCK修复表${hiveconf:dbnm}.tblnm;
:-我的文本列示例中有双引号--“5F367C99E4B079AF79A2B89”,“华盛顿:乔治和玛莎,“友谊相聚,爱情加冕”在这里,第二列有两个双引号。我尝试了与上面相同的方法,但没有帮助我。问题仍然存在。有什么办法可以解决这个问题吗?