在配置单元中,如果我有一行数据要根据某些正则表达式拆分为4个字段(例如"34,56 43--21"
到34, 56, 43, 21
)并且表格看起来像这样
CREATE TABLE example (f1 INT, f2 INT, f3 INT, f4 INT);
有没有办法给它文件的位置,并根据正则表达式自动将每行分成表格?
谢谢!
答案 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*)")
如果这不起作用,请将连字符从“\ - ”更改为“ - ”,但我认为需要将其转义两次。对不起,我现在无法测试。