加载到HIVE表时忽略CSV文件中的引号

ear*_*arl 4 hadoop hive

我有一个csv文件,其中的数据格式如下:

"SomeName1",25,"SomeString1"
"SomeName2",26,"SomeString2"
"SomeName3",27,"SomeString3"
Run Code Online (Sandbox Code Playgroud)

我正在将此CSV加载到配置单元表中。在表中,第1列和第3列与我不需要的引号一起插入。我希望第1 SomeName1列是第3列SomeString1

我尝试过

WITH SERDEPROPERTIES (
   "separatorChar" = "\t",
   "quoteChar"     = "\""
)
Run Code Online (Sandbox Code Playgroud)

但它不起作用,并保留“”。

这里应该采取什么方法?

表创建语句:

CREATE TABLE `abcdefgh`(
  `name` string COMMENT 'from deserializer',
  `age` string COMMENT 'from deserializer',
  `value` string COMMENT 'from deserializer')
ROW FORMAT SERDE
  'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
  'quoteChar'='\"',
  'separatorChar'='\t')
STORED AS INPUTFORMAT
  'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  'hdfs://a-b-c-d-e:9000/user/hive/warehouse/abcdefgh'
TBLPROPERTIES (
  'numFiles'='1',
  'numRows'='0',
  'rawDataSize'='0',
  'totalSize'='3134916',
  'transient_lastDdlTime'='1490713221')
Run Code Online (Sandbox Code Playgroud)

Dav*_*itz 5

您的定界符应为逗号: "separatorChar" = ','

create external table mytable 
(
    col1 string
   ,col2 int
   ,col3 string
)
row format serde 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
with serdeproperties 
(
    "separatorChar" = ','
   ,"quoteChar"     = '"'
)  
stored as textfile
;
Run Code Online (Sandbox Code Playgroud)
select * from mytable
;
Run Code Online (Sandbox Code Playgroud)
+--------------+--------------+--------------+
| mytable.col1 | mytable.col2 | mytable.col3 |
+--------------+--------------+--------------+
| SomeName1    |           25 | SomeString1  |
| SomeName2    |           26 | SomeString2  |
| SomeName3    |           27 | SomeString3  |
+--------------+--------------+--------------+
Run Code Online (Sandbox Code Playgroud)