gpt4 book ai didi

hadoop - 选择性地将iis日志文件加载到Hive中

转载 作者:行者123 更新时间:2023-12-02 21:53:00 26 4
gpt4 key购买 nike

我刚开始在cloudera平台上使用Hadoop / Pig / Hive,并且对如何有效加载数据进行查询有疑问。

我目前将具有以下目录结构的〜50GB iis日志加载到hdfs中:

/user/oi/raw_iis/Webserver1/Org/SubOrg/W3SVC1056242793/ /user/oi/raw_iis/Webserver2/Org/SubOrg/W3SVC1888303555/ /user/oi/raw_iis/Webserver3/Org/SubOrg/W3SVC1056245683/

etc



我想将所有日志加载到Hive表中。

我有两个问题/问题:

1。

我的第一个问题是某些Web服务器可能未正确配置,并且将具有iis日志而没有所有列。这些不正确的日志需要进行额外的处理才能将日志中的可用列映射到包含所有列的架构。

数据是用空格分隔的,问题是当未启用所有列时,日志仅包括启用的列。 Hive无法自动插入空值,因为数据不包括空列。我需要能够将日志中的可用列映射到完整架构。

好日志示例:
#Fields: date time s-ip cs-method cs-uri-stem useragent
2013-07-16 00:00:00 10.1.15.8 GET /common/viewFile/1232 Mozilla/5.0+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/27.0.1453.116+Safari/537.36

缺少列的示例日志(cs方法和useragent):
#Fields: date time s-ip cs-uri-stem 
2013-07-16 00:00:00 10.1.15.8 /common/viewFile/1232

需要将缺少列的日志映射到完整的架构,如下所示:
#Fields: date time s-ip cs-method cs-uri-stem useragent
2013-07-16 00:00:00 10.1.15.8 null /common/viewFile/1232 null

如何将这些启用的字段映射到包含所有可能列的架构,为缺少的字段插入空白/空值/-标记?这是我可以使用Pig脚本处理的吗?

2。

如何定义我的Hive表以包含来自hdfs路径的信息,即我的目录结构示例中的Org和SubOrg,以便它可以在Hive中进行查询?我也不确定如何将数据从许多目录正确导入到单个配置单元表中。

最佳答案

首先提供样本数据以获得更好的帮助。

如何将这些启用的字段映射到包含所有可能列的架构,为缺少的字段插入空白/空值/-标记?

如果文件中有分隔符,则可以使用Hive,并且在没有数据的情况下,hive会自动在没有数据的地方正确插入空值。前提是您没有分隔符作为数据的一部分。

我可以用Pig脚本处理吗?

如果字段之间有定界符,则可以使用Hive,否则可以使用mapreduce/pig

如何在我的目录结构示例中包括hdfs路径中的信息,即Org和SubOrg,以便在Hive中可查询?

似乎您是 hive 中的新蜜蜂,在查询之前必须先查询create a table,其中包括path,delimiter and schema之类的信息。

这是分区的理想选择吗?

您可以根据需要应用partition on date

关于hadoop - 选择性地将iis日志文件加载到Hive中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18323683/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com