在Hive中歪曲的桌子

问题描述 投票:7回答:2

我正在学习蜂巢,遇到了扭曲的桌子。帮助我理解它。

什么是Hive中的倾斜表?

我们如何创建倾斜的表?

它如何影响性能?

hadoop hive bigdata
2个回答
15
投票

什么是Hive中的倾斜表?

倾斜表是一种特殊类型的表,其中经常出现的值(重偏斜)被拆分为单独的文件,其余的值转到其他文件中。

我们如何创建倾斜的表?

create table <T> (schema) skewed by (keys) on ('value1', 'value2') [STORED as DIRECTORIES];

示例:

create table T (c1 string, c2 string) skewed by (c1) on ('x1')

它如何影响性能?

通过指定倾斜值,Hive会将这些值自动拆分为单独的文件,并在查询期间将此事实考虑在内,以便在可能的情况下跳过(或包含)整个文件,从而提高性能。

编辑:

x1实际上是列c1偏斜的值。您可以为多个列提供多个此类值。例如,

create table T (c1 string, c2 string) skewed by (c1) on ('x1', 'x2', 'x3')

具有这样设置的优点在于,对于比其他值更频繁出现的值,将被拆分为单独的文件(如果我们使用STORED AS DIRECTORIES子句,则拆分为单独的目录)。执行引擎在查询执行期间使用此信息来提高处理效率。


2
投票

在Skewed Tables中,将为列值创建分区,该列具有许多记录,其余数据将移动到另一个分区。因此,将减少分区数,映射器数和中间文件数。例如:在100名患者中,90名患者患有高血压,其他10名患者患有发烧,感冒,癌症等。因此,将为90名患者创建一个分区,并为其他10名患者创建一个分区。我希望这能回答你的问题。

© www.soinside.com 2019 - 2024. All rights reserved.