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'字段。 –