如何在配置单元中使用CSV serde加载带有嵌入双引号的CSV数据。不更新传入的数据文件

如何在配置单元中使用CSV serde加载带有嵌入双引号的CSV数据。不更新传入的数据文件,csv,hadoop,hive,Csv,Hadoop,Hive,我有如下文本文件: 1,"TEST"Data","SAMPLE DATA" 表结构如下所示: 创建表test1(id字符串、col1字符串、col2字符串) 行格式SERDE'org.apache.hadoop.hive.serde2.OpenCSVSerde' 存储为INPUTFORMAT'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextO

我有如下文本文件:

1,"TEST"Data","SAMPLE DATA"
表结构如下所示:

创建表test1(id字符串、col1字符串、col2字符串)
行格式SERDE'org.apache.hadoop.hive.serde2.OpenCSVSerde'
存储为INPUTFORMAT'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
位置“mylocation/test1”`
当我将文件放入相关的HDFS位置时。第2列和第03列填充为
null
,这是因为中间有双引号(TEST“Data)

一种方法是使用转义字符“/”更新数据文件,但我们不允许更新传入的数据。如何正确加载数据并转义这些嵌入的双引号


感谢您的帮助!!

您可以使用RegexSerDe

create external table test1 
( 
    id      string
   ,col1    string
   ,col2    string 
)
    row format serde 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
    with serdeproperties  
    (
        'input.regex' = '^(\\d+?),"(.*)","(.*)"$'
    )
    location '/tmp/test1'
;
演示 bash

mkdir test1


蜂巢

create external table test1 
( 
    id      string
   ,col1    string
   ,col2    string 
)
    row format serde 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
    with serdeproperties  
    (
        'input.regex' = '^(\\d+?),"(.*)","(.*)"$'
    )
    location '/tmp/test1'
;



你还在这儿吗?
create external table test1 
( 
    id      string
   ,col1    string
   ,col2    string 
)
    row format serde 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
    with serdeproperties  
    (
        'input.regex' = '^(\\d+?),"(.*)","(.*)"$'
    )
    location '/tmp/test1'
;
select * from test1
;
+----------+----------------------+-------------+
| test1.id |      test1.col1      | test1.col2  |
+----------+----------------------+-------------+
| 1        | TEST"Data            | SAMPLE DATA |
| 2        | TEST Data            | SAMPLE DATA |
| 3        | TEST","Data","SAMPLE | DATA        |
+----------+----------------------+-------------+