配置单元中的倾斜与分区

pgx2nnw8  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(311)

在查看了hive中的歪斜表之后,我对歪斜表的数据存储方式和分区表的数据处理方式感到困惑。有人能用标记的例子清楚地说明这两个概念的区别吗 Skewed Tables and Partitioned Tables 一致性和不同之处?请提供例子。

nszi6y05

nszi6y051#

倾斜表和分区表的目的是相同的,以优化查询。然而,它们的方式和适用的时间有点不同。
假设我们正在构建像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筛选)时,这将导致快速查询。
还有更多,请参阅本文档。

相关问题