在Hive中歪曲的桌子

thi*_*u_k 7 hadoop hive bigdata

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

什么是Hive中的倾斜表?

我们如何创建倾斜的表?

它如何影响性能?

Tar*_*riq 16

什么是Hive中的倾斜表?

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

我们如何创建倾斜的表?

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

示例:

create table T (c1 string, c2 string) skewed by (c1) on ('x1')
Run Code Online (Sandbox Code Playgroud)

它如何影响性能?

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

编辑:

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

create table T (c1 string, c2 string) skewed by (c1) on ('x1', 'x2', 'x3')
Run Code Online (Sandbox Code Playgroud)

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

  • x1在你的例子中意味着什么? (2认同)
  • @CodingOwl您可能应该从用户名中删除** Coding **。总是有一种端庄的态度提出自己的观点。我一直试图提供尽可能多的描述性答案,但有时由于时间紧迫,我倾向于从源头复制内容,但看不到任何危害。如果您能实际提供一些帮助而不是依靠我的技术能力,那将会更加有用。无论如何,我认为我不需要在像你这样的人面前证明自己的理由。祝您的软技能好运! (2认同)

小智 5

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