hive分桶(hive为什么要分桶、分桶和分区的区别、分桶表的具体操作、如何将mysql中不是分桶的数据导入到分桶表中)

select * from table tablesample(bucket x out of y on column)

hive根据y的大小,决定抽样的比例。y必须是table总bucket数的倍数或者因子。

例如,table总共分了10份bucket,当y=2时,抽取(10/2=)5个bucket的数据,当y=10时,抽取(10/10=)1个bucket的数据。

x表示从哪个bucket开始抽取,如果需要取多个分区,以后的分区号为当前分区号加上y。

例如,table总bucket数为6,tablesample (bucket 1 out of 2),表示总共抽取(6/2=)3个bucket的数据,从第1个bucket开始,抽取第1(x)个和第3(x+y)个和第5(x+y)个bucket的数据。

注意:x的值必须小于等于y的值。否则会抛出异常:FAILED: SemanticException [Error 10061]: Numerator should not be bigger than denominator in sample clause for table stu_buck。

注意: sqoop不支持分桶表,如果需要从sqoop导入数据到分桶表,可以通过中间临时表进行过度。ODS也可以不做分桶,从DWD明细层开始分桶。

Original: https://blog.csdn.net/weixin_46051319/article/details/124026197
Author: 小马虎不马虎
Title: hive分桶(hive为什么要分桶、分桶和分区的区别、分桶表的具体操作、如何将mysql中不是分桶的数据导入到分桶表中)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/818384/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球