正则表达式将数据行拆分为字段

时间:2015-07-20 17:34:58

标签: regex hive

在配置单元中,如果我有一行数据要根据某些正则表达式拆分为4个字段(例如"34,56 43--21"34, 56, 43, 21)并且表格看起来像这样

CREATE TABLE example (f1 INT, f2 INT, f3 INT, f4 INT);

有没有办法给它文件的位置,并根据正则表达式自动将每行分成表格?

谢谢!

2 个答案:

答案 0 :(得分:0)

是的,你可以做到

LOAD DATA INPATH ‘/path/on/hdfs/file_name.csv’ OVERWRITE INTO TABLE example1;

http://wise.ajou.ac.kr/mata/load-csv-file-to-hive-hadoop/ 假设你的列正确。请记住,这将覆盖整个表格。我想如果你想追加,最好的办法是制作一张新桌子,然后找到合并它的方法。

答案 1 :(得分:0)

使用正则表达式serde来定义模式。应提取括号中的部分。

CREATE external TABLE if not exists example (f1 INT, f2 INT, f3 INT, f4 INT)
 row format serde
   'org.apache.hadoop.hive.serde2.RegexSerde'
   with serdeproperties ("input.regex" = "(\\d*)\\,(\\d*)\\s(\\d*)\\-{2}(\\d*)")

如果这不起作用,请将连字符从“\ - ”更改为“ - ”,但我认为需要将其转义两次。对不起,我现在无法测试。