Hive 配置单元中的倾斜与分区
在经历了Hive之后,我对倾斜表的数据存储方式和分区表的数据处理方式感到困惑。有人能用标记的例子清楚地说明这两个概念的不同之处吗Hive 配置单元中的倾斜与分区,hive,hiveql,partitioning,hadoop-partitioning,skew,Hive,Hiveql,Partitioning,Hadoop Partitioning,Skew,在经历了Hive之后,我对倾斜表的数据存储方式和分区表的数据处理方式感到困惑。有人能用标记的例子清楚地说明这两个概念的不同之处吗 倾斜表和分区表 一致性和不同之处? 请提供示例。倾斜表和分区表的目的是相同的,以优化查询。然而,它们的工作方式和适用时间略有不同 让我们假设我们正在建立像Strava这样的健身跟踪器,用户数据会不断发送给我们 分区:按日期和时间对此类数据进行分区是很正常的,如/year=2017/month=10/day=12等。这样,任何基于日期和时间的过滤器都会非常快,例如
倾斜表和分区表
一致性和不同之处?
请提供示例。倾斜表和分区表的目的是相同的,以优化查询。然而,它们的工作方式和适用时间略有不同 让我们假设我们正在建立像Strava这样的健身跟踪器,用户数据会不断发送给我们
:按日期和时间对此类数据进行分区是很正常的,如分区
等。这样,任何基于日期和时间的过滤器都会非常快,例如/year=2017/month=10/day=12
从表中选择col,其中年份=2017,月份=10
:可能会发生这样的情况:一些用户不仅发送健身房锻炼,还发送步行步数、地理位置、骑自行车、卡路里消耗、睡眠等等。这些用户非常少,但与普通用户相比,他们发送的数据量非常大。因此,如果您想通过歪斜的桌子
进行查询,则速度会很慢:用户ID
从表中选择col,其中year=2017,month=10,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筛选)时,这将导致快速查询
还有更多