hive表分桶设计

作者: OverLight | 来源:发表于2019-10-25 14:57 被阅读0次

    分桶字段选择

    进行分桶之前需要对表的数据分布情况进行大致的分析,一般遵循的原则为,选择离散度高的字段进行分桶。可以通过收集的数据特征,如Distinct Value来做参考,值越大的可以优先作为考虑对象。分桶字段选择时,注意尽量使记录分布均匀,以避免数据倾斜。

    建议分桶字段:关系型数据库中的主键、邮件ID、客户ID、UUID等。

    分桶个数选择

    一般可以通过数据量维度计算分桶个数。

    根据数据量计算分桶数:

    分桶数=文本格式大小(M)/500M
    

    另外,在考虑分桶个数的时候,同时要考虑是否已经分过区。对于已经分过区的表,要按照单区的大小进行桶数的估计,而不是依照原始表。

    比如存在数据的表的分区每个分区约60000万条记录,TXT格式8000MB,orc表大概有5倍压缩比,计算方式大概思路:

    分桶数=MAX(60000万/1000万, 8000M/500M) = 60
    

    为了使数据分布更加均匀,我们一般建议选择质数作为分桶数。所以该表的最佳分桶数为59或61。


    常用的分桶字段多为原数据库的主健,或者如身份证号码,手机号等字段。如果不能 确定分桶字段,可以在分桶操作之前,建议用下面的语句查看每列的字段值数量分布情 况。尽量选择分布最离散的一列为分桶字段。

    /*其中 column_name是holodesk_table_name的一列任意字段*/
    SELECT column_name, COUNT( * ) FROM holodesk_table_name GROUP BY column_name ORDER BY COUNT; 
    

    相关文章

      网友评论

        本文标题:hive表分桶设计

        本文链接:https://www.haomeiwen.com/subject/keisvctx.html