我试了试这个脚本。
DEFINE SRS datafu.pig.sampling.SimpleRandomSample('0.01');
examples = LOAD '/home/sreeveni/myfiles/FS/age.txt' as (id,age);
grouped = GROUP examples BY id;
sampled = FOREACH grouped GENERATE FLATTEN(SRS(examples));
DUMP sampled;
这意味着什么:
SimpleRandomSample('0.01')
Pig无法找到输入文件。根据给出的位置,我猜数据在您的本地文件系统中。所以只能在本地模式运行Pig。
SimpleRandomSample('0.01')生成的数据是总体大小的1%。基本上,0.01是概率乘以数据大小(p*n)来生成随机样本数据。我们使用这种方法是因为我们无法控制随机数据的大小。但是在传递此值之后,Pig生成的样本数据大小大约为样本数据的1%。
您可以尝试这样做:
examples = LOAD '/home/sreeveni/myfiles/FS/age.txt' as (id,age);
sampled = SAMPLE examples 0.005;
DUMP sampled;
这应该生成行数的0.5%,大约是4行。在SAMPLE命令中给出的值是总行数的一个百分比,这是一个近似值。我认为没有办法生成固定数量的行。
如果你想在映射模式下使用pig,使用grunt将你的输入文件复制到hdfs。copyFromLocal/local/source/path/hdfs/path/for/input