大家都知道日志的形式偏非结构化,有很多特殊的字符等等,现总结一些日志中常用或者易用到的函数便于日志数据的提取、解析。
1.get_json_object,底层日志经常会被储存为json字符串的形式,如果想获得各个维度的值,往往需要这个函数把对应的值取出来,具体用法为:
get_json_object(action,'$.evt_id') 取出1111027379533
此处假设需要解析的字段叫action,action的值如下:
{
"info_json":
{
"a": {
"b": "300","c": "15000"},
"d": "110000",
"e": "小花",
"f": "小芳"},
" token": "1111027379533"
}
同样如果要取出d所对应的110000这个值,可用嵌套的get_json_object方法
get_json_object(get_json_object(
'{
"info_json":
{"a": {"b": "300","c": "15000"},
"d": "110000",
"e": "小花",
"f": "小芳"},
"evt_id": "1111027379533"
}','$.info_json'),'$.d')
需要注意的是,key值不要是中文,要不然hive会报错,而且,key值要用双引号括起来,json串的格式要规范。此外hive核心编程这本书中有提到一个json_tuple这个函数的用法,目前还没有用,先占个坑,回头再补。
2.regexp_extract(),这个函数相信很多博客都有提及,主要和正则表达式一起使用,以提取自己想要的那部分数据.regexp_extract(str, regexp[, idx]) - extracts a group that matches regexp
字符串正则表达式解析函数。
– 这个函数有点类似于 substring(str from ‘regexp’) ..
参数解释:
其中:
str是被解析的字符串