如何将CSV文件导出到带有逗号的记录值的Hive表中?

时间:2015-12-15 19:33:58

标签: csv hadoop hive

输入文件

   11/24/2013,bank of nyc,withdrawl,deposit,in progress
   11/16/2014,bank of dc,opeanig,closing,resolved    

我希望他们在表格中

  Date           Bank name         issue                status 
  11/24/2013     bank of nyc     withdrawl,deposit     in progress
  11/16/2014     bank of dc      opeanig,closing       resolved

1 个答案:

答案 0 :(得分:1)

好吧,问题是逗号没有被转义...如果逗号是字符串或分隔符的一部分,hive应该如何知道?

如果你只能在一个已知列中有额外的逗号,就像在这种情况下,第三个。 然后,您可以编写一个正则表达式,在第二个逗号和最后一个逗号之间取任何内容,并将其与Regexp serde一起使用。 这适用于您的示例,因为只有'问题'可能有逗号。

CREATE TABLE csvsample(
  date STRING,
  bank_name STRING,
  issue STRING,
  status STRING
) ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe' 
  WITH SERDEPROPERTIES (
   "input.regex" = "^([^,]+),([^,]+),(.+),([^,]+)$") ;
hive> select * from csvsample;
OK
11/24/2013  bank of nyc withdrawl,deposit   in progress
11/16/2014  bank of dc  opeanig,closing resolved