1

次の Pig コードでわかるように、Attr1 と Attr2 の一連のステートメントを繰り返しています。関数で抽出する方法はありますか?コードサンプルは本当に役に立ちます。

Attr1ValidRecs = FILTER BaseRecs BY Attr1 IS NOT NULL;
Attr1ValidRecs_all = GROUP Attr1ValidRecs ALL;
Attr1Count = FOREACH Attr1ValidRecs_all GENERATE COUNT(Attr1ValidRecs);
Attr1CountStr = FOREACH Attr1Count GENERATE CONCAT('Recs with Attr1 not null : ',(chararray)$0);

Attr1BaseCross = CROSS BaseRecsCount,Attr1Count;
Attr1BaseRatio = FOREACH Attr1BaseCross GENERATE CONCAT('Ratio of Not Null Attr1 to Total Base Recs: ',(chararray)((double)$1/(double)$0));

Attr2ValidRecs = FILTER BaseRecs BY Attr2 IS NOT NULL;
Attr2ValidRecs_all = GROUP Attr2ValidRecs ALL;
Attr2Count = FOREACH Attr2ValidRecs_all GENERATE COUNT(Attr2ValidRecs);
Attr2CountStr = FOREACH Attr2Count GENERATE CONCAT('Recs with Attr2 not null : ',(chararray)$0);

Attr2BaseCross = CROSS BaseRecsCount,Attr2Count;
Attr2BaseRatio = FOREACH Attr2BaseCross GENERATE CONCAT('Ratio of Not Null Attr2 to Total Base Recs:
',(chararray)((double)$1/(double)$0));
4

1 に答える 1

0

残念ながら、複数の行をPig操作のバッチに置き換えることはできません。たまにやりたいことなので、お見舞い申し上げます。

同じスクリプトで何度も繰り返すことがあるときに過去に行ったことは、Pythonスクリプト(または明らかに何でも)でforループを使用してPig Latinコードを生成し、特定のキーワードを置き換えることです。しかし、これはまだかなり汚い感じがします。

于 2011-07-03T02:05:30.493 に答える