【问题标题】:Using multiple levels of partitions in Hive在 Hive 中使用多级分区
【发布时间】:2013-02-25 21:42:27
【问题描述】:

我想知道以下是否可能。我在 Hive 中有按日期和记录器分区的数据,但我也有不属于特定记录器的数据。

例如

date=2012-01-01/logger=1/part000
date=2012-01-01/logger=1/part001
date=2012-01-01/logger=2/part000
date=2012-01-01/logger=2/part001
date=2012-01-01/part000

我创建了我的表:

create table mytable (
    ...
)
partitioned by (date string, logger int)
....
;

并添加分区:

alter table mytable add partition (date='2012-01-01', logger=1) location '/user/me/date=2012-01-01/logger=1/';
...

可以查询分区中的数据,但无法查询文件date=2012-01-01/part000中的数据。是否可以在不符合分区的情况下包含此文件?

谢谢

【问题讨论】:

    标签: hive partitioning


    【解决方案1】:

    Aaron,你是如何获得这样的结构的?通常,如果缺少分区键,HIVE 会创建名为 __HIVE_DEFAULT_PARTITION__ 的分区。

    【讨论】:

    • 该结构是由于将最初未为 Hive 分区的数据移动到 Hive 中而产生的。 date=2012-01-01/part000 中的数据与其他数据结构相同,但与记录器没有任何关联。我可能必须将其移动到默认的 logger=0 以使其适合 Hive。
    • 你必须这样做。文件夹结构必须适合表定义。 GL!
    • 谢谢。您的最后一条评论实际上就是答案,所以我会接受这个答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-05
    • 1970-01-01
    相关资源
    最近更新 更多