配置单元中的倾斜表

jk9hmnmh  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(370)

我在学Hive,碰到歪斜的table。帮我理解一下。
Hive里的斜桌是什么?
如何创建倾斜表?
它如何影响性能?

jrcvhitl

jrcvhitl1#

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子句,则为单独的目录)。执行引擎在查询执行期间使用这些信息,以提高处理效率。

n1bvdmb6

n1bvdmb62#

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

相关问题