Hive 分发者与不分发者



这听起来可能很基本,但这个问题困扰了我一段时间。

假设我有以下查询

SELECT s.ymd, s.symbol, s.price_close FROM stocks s
SORT BY s.symbol ASC;
在这种情况下,如果数据在

品种列上具有良好的分布,那么基于符号列进行分布是有意义的,以便所有化简器都能获得良好的数据份额;将查询更改为以下内容将提供更好的性能

SELECT s.ymd, s.symbol, s.price_close FROM stocks s
DISTRIBUTE BY s.symbol
SORT BY s.symbol ASC, s.ymd ASC;

如果我不指定分发依据子句会有什么影响?在第一个查询中选择的默认映射输出键列是什么,即它分布在什么列上?

我自己找到了答案。使用排序依据时,映射器的输出键不是应用排序依据的列。键可以是记录的文件偏移量。化简器的输出按化简器排序,但相同的按列值排序可能会出现在多个化简器的输出中。这意味着减速器的输出之间存在重叠。分发依据 确保数据根据分布依据列在化简器之间拆分,从而确保相同的列值转到同一个化简器,从而进入相同的输出文件。

详细信息可用。我认为这就是您正在寻找的答案。https://cwiki.apache.org/confluence/display/Hive/LanguageManual+SortBy

相关内容

  • 没有找到相关文章

最新更新