2014-02-09 33 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'字段。 –