我是hive的新手。我有按日期存储在文件夹中的日志:logs/2016/02/15/log-xxx.json
。我想对最后一天的日志进行日常分析。我不想在最后2-3个文件夹上运行hiveQL(时区差异)。如何有效地做到这一点?
答案 0 :(得分:0)
您可以根据日期创建包含分区的数据库。
CREATE EXTERNAL TABLE user (
userId BIGINT,
type INT,
level TINYINT,
date String
)
PARTITIONED BY (date String)
Hive使用架构读取 - 这意味着如果稍后手动将文件添加到HDFS,它将在SELECT语句执行期间自动将它们考虑在内。 只需根据日期将它们放入适当的位置
但有一刻你应该考虑到:
因为声明外部表时,默认表路径是 已更改为包含in的hive元数据中的指定位置 Metastore,但关于分区,没有任何改变,所以,我们必须 手动添加这些元数据。
ALTER TABLE user ADD PARTITION(date='2010-02-22');
在此处阅读更多内容:http://blog.zhengdong.me/2012/02/22/hive-external-table-with-partitions/
该帖子的作者还提供了自动添加分区的脚本。