我们正在使用IBM的Netezza。我们有一张表,每天可以获得近100亿条记录,我们需要处理这些记录。该表的一个字段通过38个字符的数字字符串标识用户,我们称之为UserID。我们将此表分布在UserID上。我正在寻找最佳的采样技术。目前,我们使用mod(UserID,SamplingRate)= 0进行采样,但由于此表分布在UserID上,我认为肯定有更好的方法。
在Hive中,我们有桶的概念,在这里我们可以将表分成一些桶,然后取出一个桶,这样可以提供良好的性能。
更新 通过抽样数据,我的意思是随机获得5亿条均匀分布的记录。我想要获得的记录数量可以根据我的采样率确定。 UserID的数据类型是数字(38)。 (Java:BigDecimal)
答案 0 :(得分:0)
在哪里条件的简单随机样本怎么样?多数民众赞成在计划中解决,因此它应该顺利运行,到目前为止rand()具有统一的分布:
SELECT * FROM BIGTABLE WHERE RAND()< SAMPLE_SIZE/BIGTABLE_TOTAL;