使用Hive的正则表达式匹配数据时为NULL
来源:互联网 发布:时间煮雨 知乎 编辑:程序博客网 时间:2024/05/17 08:21
今天要将Ngix用户访问日志导入到Hive表中,日志的格式是这样的:
120.221.0.66 - - [22/Aug/2017:03:46:04 +0800] "GET /xx/xx-162.patch HTTP/1.1" 304 0 "-" "Mozilla/5.0 Gecko/20100115 Firefox/3.6" "-",所以就使用了正则表达式的方式,来匹配每一个字段,在http://wpjam.qiniudn.com/tool/regexpal/里,明明全部匹配到了,但是导入到Hive表中的时候,数据就是为Null,
drop table if exists default.ansun_log_src ;
create table IF NOT EXISTS default.ansun_log_src (
remote_ip string,
remote_addr string,
remote_user string,
time_local string,
request string,
status string,
status2 string,
status3 string,
version string,
host string
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
"input.regex" = "([^ ]*) (-|[^ ]*) ([^\]]*) (\"[^\"]*\") (\"[^\]]*\") ([0-9]*) ([0-9]*) (\"-|[^ ]*\") (\"[^\"]*\") (\"-|[^ ]*\")"
)
stored as textfile ;
百度了很久,终于找到了答案,原因就在于在方括号中,正则表达式中的字符转义跟一般情况下的转义不一样。
参考:http://www.cnblogs.com/echomyecho/p/3340987.html 以及 http://blog.sina.com.cn/s/blog_6ff05a2c0100voxd.html
- 使用Hive的正则表达式匹配数据时为NULL
- Hive 正则表达式使用 与 匹配中文
- 正则表达式匹配使用
- 使用正则表达式的模式匹配
- 使用正则表达式匹配[***]样式的字符串
- 匹配的正则表达式
- 正则表达式的匹配
- 正则表达式的匹配
- 正则表达式的匹配
- 正则表达式的匹配
- 在C#中使用正则表达式自动匹配并获取所需要的数据
- 正则表达式匹配入参为某个值的函数
- 使用正则表达式匹配中文
- JAVA使用正则表达式匹配
- 使用正则表达式匹配省略号
- 使用正则表达式进行匹配
- 使用正则表达式进行匹配
- Hive加载数据时遇到NULL数据错误的解决方法
- tagVARIANT结构
- 欢迎使用CSDN-markdown编辑器
- 怎么给MP4加密、选用隐大师U盘
- constructor-arg和 property的使用
- Linux 信号
- 使用Hive的正则表达式匹配数据时为NULL
- CTF学习站点总结
- 通过sql语句,根据时间值返回相应状态
- PHP图片与base64字符串相互转换函数
- 数据的存储(一、共享参数 SharedPreferences)
- js基础
- make bzImage时报错scripts/sign-file.c:23:30: fatal error: openssl/opensslv.h: No such file or directory
- Android 自定义View (四) 视频音量调控
- Android开发中,常用工具类集合:Sutils,一款轻量级的Android开发工具类库