我在学Hive,碰到歪斜的table。帮我理解一下。Hive里的斜桌是什么?如何创建倾斜表?它如何影响性能?
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子句,则为单独的目录)。执行引擎在查询执行期间使用这些信息,以提高处理效率。
n1bvdmb62#
在倾斜表中,将为具有许多记录的列值创建分区,其余数据将移动到另一个分区。因此,分区的数量、Map器的数量和中间文件的数量将减少。例如:在100名患者中,90名患者有高血压,另外10名患者有发热、感冒、癌症等。因此,将为90名患者创建一个分区,并为其他10名患者创建一个分区。我希望这能回答你的问题。
2条答案
按热度按时间jrcvhitl1#
Hive里的斜桌是什么?
歪斜表是一种特殊类型的表,其中经常出现的值(严重歪斜)被拆分为单独的文件,其余的值转到其他文件。。
如何创建倾斜表?
例子:
它如何影响性能?
通过指定偏移值,hive将自动将这些文件拆分为单独的文件,并在查询过程中考虑这一事实,以便尽可能跳过(或包括)整个文件,从而提高性能。
编辑:
x1实际上是列c1偏移的值。对于多个列,可以有多个这样的值。例如,
使用这种设置的好处是,对于比其他值更频繁出现的值,可以将其拆分为单独的文件(如果我们使用的是stored as directories子句,则为单独的目录)。执行引擎在查询执行期间使用这些信息,以提高处理效率。
n1bvdmb62#
在倾斜表中,将为具有许多记录的列值创建分区,其余数据将移动到另一个分区。因此,分区的数量、Map器的数量和中间文件的数量将减少。例如:在100名患者中,90名患者有高血压,另外10名患者有发热、感冒、癌症等。因此,将为90名患者创建一个分区,并为其他10名患者创建一个分区。我希望这能回答你的问题。