我正在创建一个外部表,它引用hdfs位置中的orc文件。orc文件以这样一种方式存储:外部表按日期分区(Map到hdfs上的按日期的文件夹,作为分区)。但是,我想知道是否可以对这些外部表强制执行“bucketing”,因为底层数据/文件不是由hive“管理”的。它们是在外部编写的,因此可以在配置单元外部表中使用bucketing吗?
hive允许我在创建外部表时使用'clustered by'子句。但我无法理解hive将如何将数据重新分配到存储桶中,hdfs上已经作为orc文件写入的内容是什么?
我在这里看到过关于外部表中分区和bucketing的类似问题:
配置单元:在使用外部表时,配置单元是否支持分区和bucketing
和
我可以按/bucket对通过hive中的“create table as select…”创建的表进行集群吗?
但答案只涉及外部表中的分区支持或托管表中的bucket支持。我知道这两个选项,并已在使用它,但需要具体的答案,对bucketing支持在Hive外部表。
总之,配置单元外部表支持bucketing吗?如果是,外部文件夹中的数据如何通过配置单元重新分配到存储桶中?
1条答案
按热度按时间6l7fqoea1#
是的,hive确实支持外部表的bucketing和分区。
试试看:
描述说:
加载更多行,您将看到,它将为每个分区创建3个文件
有关托管表和外部表支持的功能的更多详细信息,请参见本文档:托管表与外部表。