输入文件
11/24/2013,bank of nyc,withdrawl,deposit,in progress 11/16/2014,bank of dc,opeanig,closing,resolved
11/24/2013,bank of nyc,withdrawl,deposit,in progress
11/16/2014,bank of dc,opeanig,closing,resolved
我要他们在table上
Date Bank name issue status 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
20jt8wwn1#
好吧,问题是逗号没有转义…hive怎么知道逗号是字符串的一部分,还是分隔符?如果在一个已知列中只能有额外的逗号,这是可能的,就像在本例中的第三列一样。然后,可以编写一个正则表达式,该表达式接受第二个逗号和最后一个逗号之间的任何内容,并将其与regexp serde一起使用。这适用于您的示例,因为只有'issue'可能有逗号。
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;OK11/24/2013 bank of nyc withdrawl,deposit in progress11/16/2014 bank of dc opeanig,closing resolved
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
1条答案
按热度按时间20jt8wwn1#
好吧,问题是逗号没有转义…hive怎么知道逗号是字符串的一部分,还是分隔符?
如果在一个已知列中只能有额外的逗号,这是可能的,就像在本例中的第三列一样。然后,可以编写一个正则表达式,该表达式接受第二个逗号和最后一个逗号之间的任何内容,并将其与regexp serde一起使用。这适用于您的示例,因为只有'issue'可能有逗号。