2014-02-07 51 views
1

我们正在使用IBM的Netezza。我们有一张桌子,每天有近100亿条记录需要处理。表中的一个字段通过38个字符的数字字符串标识用户,我们称之为UserID。我们有这张表分布在UserID上。我正在寻找最佳的抽样技术。目前,我们使用mod(UserID,SamplingRate)= 0进行了示例,但由于此表分布在UserID上,因此我认为肯定有更好的方法。Netezza /大型数据库的采样数据技术

在Hive中,我们有桶的概念,在这里我们可以将我们的表分成一些桶,然后完全取出桶中的一个,从而获得良好的性能。

更新: 通过抽样数据,我的意思是随机获得5亿份均匀分布的记录。我想获得的记录数可以根据我的采样率来确定。 UserID的数据类型是数字(38)。 (Java:BigDecimal)

+0

你是什么意思的抽样?你只是想要一个100亿记录的随机子集? – Niederee

+0

什么'datatype'是'userID'字段? – Niederee

+0

用更多信息更新了描述。 –

回答

0

怎么样在一个简单的随机样本条件?在计划中解决,所以它应该平稳运行,到目前为止rand()具有均匀分布:

SELECT * FROM BIGTABLE WHERE RAND()< SAMPLE_SIZE/BIGTABLE_TOTAL;