我正在学习Hive,并遇到了“倾斜表(skewed tables)”的问题。帮我理解一下。
什么是Hive中的倾斜表?
我们如何创建倾斜表?
它会如何影响性能?
什么是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')