1
如何將Hive表中的數據抽樣爲2部分:80%和20%。我是否需要通過桶1到5進行抽樣,並將這些5中的聯合4抽樣爲一張桌子,還是有更簡單的方法?將數據集中的數據集抽樣爲80%和20%
如何將Hive表中的數據抽樣爲2部分:80%和20%。我是否需要通過桶1到5進行抽樣,並將這些5中的聯合4抽樣爲一張桌子,還是有更簡單的方法?將數據集中的數據集抽樣爲80%和20%
如果更換是好的,你不介意大約80%和大約20%,你可以使用塊取樣。
如果更換不好,我認爲你提到的方法是唯一的方法。如果你將你的源表集成到5個桶中,你應該能夠以良好的性能來做到這一點。
這是多輸出語法派上用場的地方。選擇一個關鍵這是相當隨機的,執行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);
你也可以只使用蘭特()作爲bucket_key有保證的80-20分的情況下,有沒有方便,很好地分佈的'id'字段。 –