3

我已经看到了一些很好的解释来创建一个分区为CLUSTERED BY和的表SORTED BY。这与创建带有分区的表,然后使用填充表(INSERT OVERWRITE例如)相比CLUSTER BY如何?是CLUSTER BY表内的持久排序吗?

4

1 回答 1

1

即使 INSERT OVERWRITE + CLUSTER BY 会生成具有持久排序数据的表,除了创建 CLUSTERED BY 表之外,没有办法告诉 hive 数据已经排序。只有当 Hive 知道排序数据并因此可以优化查询时,您才能从排序数据(例如排序合并连接)中受益。数据不必按照生成或传递给写入器的顺序写入磁盘,除非您指定该表是聚集(排序)的。通常(堆)表在理论上没有排序。写入器进程不会以与输入相同的顺序写入数据,因为它是缓冲(延迟写入)和并行的。

于 2014-02-06T15:24:24.610 回答