2017-10-15 40 views
1

我是Hive新手;所以,我不确定公司如何使用Hive。让我给你一个场景,看看我在使用Hive的概念上是否正确。什么是Hive常见用例?

假设我的公司希望保留一些Web服务器日志文件,并且始终能够搜索并分析日志。因此,我创建了一个表格列,其中对应于日志文件中的列。然后我将日志文件加载到表中。现在,我可以开始查询数据。因此,随着数据在未来的日期发布,我只是不断地将数据添加到此表中,因此我始终将我的日志文件作为Hive中的表格进行搜索和分析。

这种情况是否超出常见用途?如果是这样,那么我如何不断向表中添加新的日志文件?我是否必须每天都手动将它们添加到表格中?

回答

2

可以使用Hive来分析静态数据集,但是如果你有流式日志,我真的不会为此提出Hive建议。这不是一个搜索引擎,只需要几分钟就能找到您要查找的任何合理数据。

如果您必须保持在Hadoop生态系统中,HBase可能会是更好的选择。 (Hive可以查询Hbase)

如果您想要合理的日志分析工具,请使用Splunk或Solr/Elasticsearch/Graylog的开源替代品。

但是,为了回答您的问题

我怎么继续增加新的日志文件表?我是否必须每天都手动将它们添加到表格中?

使用EXTERNAL在日志的HDFS位置上使用Hive表。使用Flume将日志数据发送到该路径(或将日志发送到Kafka,以及将Kafka发送到HDFS以及搜索/分析系统)

如果要添加日期分区,则只需更新表(你应该这样做,因为这就是你如何获得更快的Hive查询)。您会使用MSCK REPAIR TABLE来检测HDFS上缺失的分区。或按计划自行运行ALTER TABLE ADD PARTITION。注:汇合的HDFS卡夫卡Connect将自动创建配置单元表分区为您

如果必须使用蜂巢,可以提高查询的更好,如果你将数据转换成ORC或镶木格式

+0

你说,我可以用水槽将数据带入HDFS。但是,这些数据如何添加到同一张表中?答案可能很简单,你假设我知道。但是这些数据如何添加到表格中? –

+0

所有的Hive都是HDFS位置的元数据。把更多的数据放在HDFS路径上,Hive可以查询它 –

+0

我不认为你理解我的问题。我知道我可以使用Hive查询HDFS上的任何数据;但我希望他们都成为同一张桌子的一部分。为了澄清,我们假设我是MySQL;那么随着数据的进入,我只需将它插入到同一个表中,然后我就可以在同一个表上进行查询。这就是我想要的,假设数据进入后的10年,我的过程会将数据添加到同一个表中,因此在查询中,我查询同一个表。 –

相关问题