在蜂巢中对数据集进行抽样80%和20%

时间:2014-02-09 07:42:47

标签: hive

如何将来自Hive表的数据分为两部分:80%和20%。我是否必须通过1至5桶和5个联合4对一张表进行采样或者是否有更简单的方法?

2 个答案:

答案 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个桶中,则应该能够以良好的性能执行此操作。