【问题标题】:Skew vs Partition in HiveHive 中的倾斜与分区
【发布时间】:2017-11-30 11:13:24
【问题描述】:

在 Hive 中查看Skewed tables 之后,我对倾斜表的数据存储方式以及分区表的处理方式感到困惑。有人可以用标记的例子清楚地说明这两个概念的区别

Skewed Tables and Partitioned Tables

重合,它们在哪里不同? 请提供示例。

【问题讨论】:

    标签: hive hiveql partitioning hadoop-partitioning skew


    【解决方案1】:

    Skewed 表和 Partitioned 表的目的相同,都是为了优化查询。但是,它们的执行方式和适用时间略有不同。

    假设我们正在构建像 Strava 这样的健身追踪器,并且不断向我们发送用户数据。

    • Partitioning:像/year=2017/month=10/day=12 这样按日期和时间对这类数据进行分区是很正常的。这样任何基于日期和时间的过滤器都会非常快,例如。

    SELECT col FROM table WHERE year=2017 AND month=10

    • Skewed table: 有些用户可能不仅发送健身房锻炼,还发送步行步数、地理位置、骑自行车、卡路里消耗、睡眠等等。这些用户很少,但与普通用户相比,他们发送的数据量非常大。所以如果你想通过UserId查询,会很慢:

    SELECT col FROM table WHERE year=2017 AND month=10 AND userid=20

    但是,倾斜的表格可以在这里提供帮助。假设这些活跃用户是20, 23, 25。现在您可以创建如下存储数据:

    /year=2017/month=10/day=12/userid=20
    /year=2017/month=10/day=12/userid=23
    /year=2017/month=10/day=12/userid=27
    /year=2017/month=10/day=12/userid=others

    如您所见,这些健身狂都有自己的目录。当您在上面运行相同的查询时,这将导致快速查询(按用户 ID 过滤)。

    还有更多内容,refer to this documentation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-16
      • 1970-01-01
      • 2014-09-09
      • 1970-01-01
      • 2023-03-19
      • 2019-03-01
      • 1970-01-01
      • 2019-12-15
      相关资源
      最近更新 更多