hive:固定的日志结构和每日分析

izkcnapc  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(347)

我是新来的Hive。我已按日期将日志存储在文件夹中: logs/2016/02/15/log-.json . 我想每天对上一天的日志进行分析。我不想在最后2-3个文件夹上运行hiveql(时区差异)。如何有效地做到这一点?
我不能告诉hive自动发现新日志并将它们添加为新分区,对吗?
我是否必须在每次查询之前创建外部表,然后删除它?
有没有办法告诉配置单元只在指定的文件夹上运行查询而不创建任何表?

8iwquhpp

8iwquhpp1#

您可以根据日期创建带有分区的数据库。

CREATE EXTERNAL TABLE user (
  userId BIGINT,
  type INT,
  level TINYINT,
  date String
)
PARTITIONED BY (date String)

hive使用schema on read—这意味着如果您稍后手动将文件添加到hdfs,它将在select语句执行期间自动考虑这些文件。根据日期把它们放在适当的地方
但是,有一点你应该考虑到:
因为在声明外部表时,默认表路径会更改为metastore中包含的配置单元元数据中的指定位置,但是关于分区,什么都不会更改,所以必须手动添加这些元数据。

ALTER TABLE user ADD PARTITION(date='2010-02-22');

阅读更多信息:http://blog.zhengdong.me/2012/02/22/hive-external-table-with-partitions/
这篇文章的作者还提供了自动添加分区的脚本。

相关问题