使用pig从一堆gzip文件中采样1000行

ht4b089n  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(252)

我对Pig很陌生,所以我可能走错了路。我在hadoop的一个目录中有一堆gzip文件。我试着从所有这些文件中抽取大约1000行。不一定要精确,所以我想用 SAMPLE . SAMPLE 需要采样一行的概率,而不是我需要的行数,所以我想我应该计算所有这些文件中的行数,而不是简单地用1000除以这个数,然后用它作为概率。这将工作,因为我不需要正好有100行结束。到目前为止,我得到的是:

raw = LOAD '/data_dir';
cnt = FOREACH (GROUP raw ALL) GENERATE COUNT_STAR(raw);
cntdiv = FOREACH cnt GENERATE (float)100/ct.$0;

现在我不知道如何使用中的值 cntdivSAMPLE . 我试过了 SAMPLE raw cntdiv 以及 SAMPLE raw cntdiv.$0 ,但它们不起作用。我能在调用 SAMPLE ? 也许有更好的方法来完成我想做的事情?

kq4fsx7k

kq4fsx7k1#

查看最初请求此功能的票证中的描述:https://issues.apache.org/jira/browse/pig-1926
我还没有测试过这个,但看起来应该可以:

raw = LOAD '/data_dir';
samplerate = FOREACH (GROUP raw ALL) GENERATE 1000.0/COUNT_STAR(raw) AS rate;
thousand = SAMPLE raw samplerate.rate;

重要的是通过名称引用标量( rate ),而不是按位置( $0 ).

相关问题