Hive 分区依据、群集依据和排序依据与存储桶之间的配置单元差异,以及插入覆盖与分区依据和群集依据之间的差异?

Hive 分区依据、群集依据和排序依据与存储桶之间的配置单元差异,以及插入覆盖与分区依据和群集依据之间的差异?,hive,Hive,我已经看到了一些很好的解释,说明了如何创建一个表,其中的分区是按聚集的分区和按排序的。这与创建带有分区的表,然后使用CLUSTER BY填充表(例如使用INSERT OVERWRITE)相比如何?CLUSTER BY是否是表中的持久排序?即使INSERT OVERWRITE+CLUSTER BY将生成具有持久排序数据的表,也无法告诉配置单元数据已经排序,而不是创建CLUSTER BY table。只有当配置单元知道排序数据并因此可以优化查询时,您才能受益于排序数据(例如,排序合并联接)。除非您指

我已经看到了一些很好的解释,说明了如何创建一个表,其中的分区是按聚集的
分区和按
排序的
。这与创建带有分区的表,然后使用
CLUSTER BY
填充表(例如使用
INSERT OVERWRITE
)相比如何?
CLUSTER BY
是否是表中的持久排序?

即使INSERT OVERWRITE+CLUSTER BY将生成具有持久排序数据的表,也无法告诉配置单元数据已经排序,而不是创建CLUSTER BY table。只有当配置单元知道排序数据并因此可以优化查询时,您才能受益于排序数据(例如,排序合并联接)。除非您指定表是聚集(排序)的,否则数据不一定按照生成或传递给写入程序的相同顺序写入磁盘。通常的(堆)表在理论上没有排序。Writer进程写入数据的顺序与输入的顺序不同,因为它是缓冲(延迟写入)和并行的