如何将来自Hive表的数据分为两部分:80%和20%。我是否必须通过1至5桶和5个联合4对一张表进行采样或者是否有更简单的方法?
答案 0 :(得分:3)
这是多输出语法派上用场的地方。选择一个相当随机的密钥,执行md5哈希,然后取模10。
from ( select md5( id) % 10 as bucket_key, * from mytable) sample_set
insert overwrite table eighty_percent
( select * from sample_set where bucket_key < 8)
insert overwrite table twenty_percent
( select * from sample_set where bucket_key >= 8 );
答案 1 :(得分:0)
如果替换正常,你不介意大约80%和大约20%,你可以使用块采样。
如果替换不合适,我认为你提到的方法是唯一的方法。如果将源表集群到5个桶中,则应该能够以良好的性能执行此操作。