2014-02-09 21 views

回答

0

如果更换是好的,你不介意大约80%和大约20%,你可以使用块取样。

如果更换不好,我认为你提到的方法是唯一的方法。如果你将你的源表集成到5个桶中,你应该能够以良好的性能来做到这一点。

2

这是多输出语法派上用场的地方。选择一个关键这是相当随机的,执行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); 
+0

你也可以只使用兰特()作为bucket_key有保证的80-20分的情况下,有没有方便,很好地分布的'id'字段。 –