使用serde regex在配置单元表中加载日志数据为空
我想分析这个日志样本 5月3日11:52:54 cdh-dn03初始:tty(/dev/tty6)主进程(1208) 被术语信号杀死 5月3日11:53:31 cdh-dn03内核:已注册taskstats版本1 五月三日11:53:31 cdh-dn03内核:sr0:scsi3 mmc驱动器:32x/32x xa/form2托盘 5月3日11:53:31 cdh-dn03内核:piix4_smbus 0000:00:07.0:smbus基础 地址未初始化-升级BIOS或使用force\u addr=0xaddr 5月3日11:53:31 cdh-dn03内核:nf_conntrack版本0.5.0(7972 铲斗,最大31888个) 5月3日11:53:57 cdh-dn03内核:hr计时器:中断时间为11250457 ns May 3 11:53:59 cdh-dn03 ntpd_initres[1705]:找不到主机名: 0.rhel.pool.ntp.org 这就是我创建表并将数据加载到表中的方式使用serde regex在配置单元表中加载日志数据为空,regex,hive,hiveql,hive-serde,Regex,Hive,Hiveql,Hive Serde,我想分析这个日志样本 5月3日11:52:54 cdh-dn03初始:tty(/dev/tty6)主进程(1208) 被术语信号杀死 5月3日11:53:31 cdh-dn03内核:已注册taskstats版本1 五月三日11:53:31 cdh-dn03内核:sr0:scsi3 mmc驱动器:32x/32x xa/form2托盘 5月3日11:53:31 cdh-dn03内核:piix4_smbus 0000:00:07.0:smbus基础 地址未初始化-升级BIOS或使用force\u ad
CREATE TABLE LogParserSample(
month_name STRING, day STRING, time STRING, host STRING, event STRING, log STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
'input.regex' = '(^(\S+))\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+((\S+.)*)')
stored as textfile;
我正在使用这些网站生成regex
这两个是我正在使用的正则表达式
load data local inpath '/home/programmeur_v/serde_dataset.txt' into table LogParserSample;
select * from LogParserSample;
(\w{3})\s+(\w{1})\s+(\s+)\s+(\s+)\s+(\s+)\s+((\s+)*)
(^(\S+)\S+(\S+)\S+(\S+)\S+(\S+)\S+(\S+)\S+((\S+)*)
加载数据并选择
load data local inpath '/home/programmeur_v/serde_dataset.txt' into table LogParserSample;
select * from LogParserSample;
输出为空
配置单元>从LogParserSample中选择*
嗯
空空空空空空空
空空空空空空空
空空空空空空空
空空空空空空空
空空空空空空空
空空空空空空空
空空空空空空空
所用时间:0.094秒,获取:7行
刚进入配置单元,所以不知道问题到底出在哪里在使用regex-serde创建配置单元表时,我们需要使用Java等效regex 尝试以下ddl:
使用link生成java等价的正则表达式。您可以尝试使用
(\w{3})\s+(\w{1})\s+(\s+)\s+(\s+)\s+(\s+)(.*)
Hi Bala,我尝试使用这个正则表达式,但仍然加载空值set@Vaibhav:如果这有效,请接受答案。