首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >重新生成nginx日志

重新生成nginx日志
EN

Stack Overflow用户
提问于 2012-06-01 21:16:21
回答 2查看 444关注 0票数 0

我目前正在将我网页上的所有活动记录到文件access.log中的nginx web-server。此文件由于其格式而无法理解,我希望通过将这些日志文件导出到Hadoop Hive来分析它们。但是,hive不能理解原始的nginx日志。因此,我计划将这些日志重新生成为JSON或CSV格式,然后将它们导出到hive,在那里我可以查询和分析日志。请向我推荐一些工具/方法,使我能够完成上述工作。目前我的nginx日志如下所示:

代码语言:javascript
运行
复制
115.249.242.17 - - [01/Jun/2012:18:44:57 +0530] "GET /flashlayer?videoId=66127&playSessionId=VOD_66127_e04393db-0b40-44b1-aad8-aa2169ac71a710.32.6.1311338556485611&duration=0&playerState=playing&playerError=null HTTP/1.1" 200 86 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/12.0"
EN

回答 2

Stack Overflow用户

发布于 2012-06-05 13:08:43

给定您提供的日志行作为示例,您应该能够在HDFS数据之上创建一个Hive表,而不会出现任何问题。

要开始使用,可以使用MetadataTypedColumnsetSerDe或RegexSerDe。当记录的字段由相同的字符分隔时,通常使用MetadataTypedColumnsetSerDe。这是在CREATE TABLE语句中使用ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'时默认使用的SerDe。不需要显式指定SerDe。

当所有记录都与特定的正则表达式匹配时,通常使用RegexSerDe。您可以在此正则表达式上使用grouping来提取将作为列数据的片段。here是可用的RegexSerDe示例

请注意,RegexSerDe的性能比LazySimpleSerDe差,所以在可能的情况下您应该更喜欢使用LazySimpleSerDe。

还请注意,无论您使用什么SerDe,Hive目前都有一个限制,即表中的一条记录必须出现在一个Hive中。换句话说,您不能让一条记录溢出到数据文件的多行中(如果数据是XML格式,这很常见),也不能让多条记录出现在一行中。有一些方法可以绕过这一限制,但如果可能的话,请避免这种情况。

票数 1
EN

Stack Overflow用户

发布于 2012-06-02 19:54:21

对于这样的任务,sed可能是最好也是最简单的工具。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10851038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档