正则表达式建表只要引用hive的正则包,并且将input的正则式子对数据切分出来的字段和output的%x$s以及你所建表的字段对应起来就好了。
废话不多说,直接上例子了:
create external table test1(
'ip' string,
'username' string,
'passwd' string,
'time' string
)
partitioned by (date string,filename string)
roe format serde 'org.apache.hadoop.hive.serde2.RegexSerDe'
with serdeproperties(
"input.regex"="正则表达式",
"output.format.string"="%1$s %2$s..." (ps:和你正则表达式切分出来的字段一一对应)
);
然后呢,该往这个表load数据了:
load data inpath '/user/hadoop/test.txt' into table test1
partition (date='2017-02-16',filename='xx.txt');
最后呢,建议大家将数据存放到hdfs上再往表中load,最好是建外部表,以防止删除表的时候数据丢失。