当某些值包含“,”时,将csv加载到配置单元表

时间:2019-11-26 22:20:00

标签: hive hdfs

我正在尝试将csv加载到配置单元表中,并且在成功加载后,由于某些列值中的“,”而导致表未正确加载。解决此问题的最佳方法是什么?

create table abc (col1 string, col2 int) row format delimited fields terminated by ',' tblproperties("skip.header.line.count"="1");

CSV示例:-

col1      col2
abc,def   12
erfd      10


 load data inpath 'path_to_csv' into table abc;

预期输出是该表已像在csv中一样正确配置在蜂巢中。

2 个答案:

答案 0 :(得分:0)

使用以下SERDE:

  1. 示例表创建

    create table test_hive1(name String, id int)
    ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde';
    
  2. 加载数据

    load data local inpath 'filepath' into table test_hive1;
    
  3. 输出

    select * from test_hive1;
    name    id
    abc 22
    cdf, def    23
    dsa 34
    

答案 1 :(得分:0)

使用OpenCSV Serde

create table abc (col1 string, col2 int) row format
SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' WITH SERDEPROPERTIES 
("escapeChar" = ",") ;

使用命令

将数据加载到表中
 load data local inpath 'path_to_csv' into table abc;