我是新来的Hive;所以,我不知道公司是如何使用Hive的。让我给你一个场景,看看我对Hive使用的概念是否正确。
假设我的公司希望保留一些web服务器日志文件,并且能够始终搜索和分析日志。因此,我创建了一个表,其中的列与日志文件中的列相对应。然后我将日志文件加载到表中。现在,我可以开始查询数据了。因此,当数据在将来的日期出现时,我只是不断地将数据添加到此表中,因此我总是将日志文件作为一个表放在配置单元中,以便搜索和分析。
上面的场景是常用的吗?如果是的话,那么我如何不断地向表中添加新的日志文件呢?我必须每天手动将它们添加到表中吗?
1条答案
按热度按时间7xzttuei1#
您可以使用hive对静态数据集进行分析,但是如果您有流日志,我真的不建议使用hive进行分析。它不是一个搜索引擎,只需要几分钟就可以找到你要找的任何合理的数据。
如果必须留在hadoop生态系统中,hbase可能是更好的选择(配置单元可以查询hbase)
如果您需要用于日志分析的合理工具,请使用splunk或solr/elasticsearch/graylog的开源替代品。
但要回答你的问题
如何不断向表中添加新的日志文件?我必须每天手动将它们添加到表中吗?
使用
EXTERNAL
在hdfs位置上为日志配置配置单元表。使用flume将日志数据发送到该路径(或者将日志发送到kafka,从kafka发送到hdfs,以及搜索/分析系统)只有在添加日期分区时才需要更新表(应该这样做,因为这样可以加快配置单元查询的速度)。你会用
MSCK REPAIR TABLE
检测hdfs上缺少的分区。或者跑ALTER TABLE ADD PARTITION
你自己的时间表。注意:confluent的hdfs kafka connect将自动为您创建配置单元表分区如果必须使用hive,那么将数据转换为orc或parquet格式可以更好地改进查询