1

Python UDF を介して画像処理を実行する Pig スクリプトを作成しました。

いくつかの操作を行った後、次のようなものがあります(たとえば):

A = load 'data.txt' using PigStorage('|') as (name:chararray, pixelIntensity:float);

B = group A by pixelIntensity;

dump B;

B は次のようになります。

(131.0,{(image1,jpg,131.0), (image2.jpg,131.0), (image3.jpg,131.0)})
(140.0,{(image5.jpg,140.0), (image5.jpg,140.0)})
(150.0,{(image4.jpg,150.0})

私が行くとしたら

dump A;

私は次のようになります:

(image1.jpg,131.0)
(image2.jpg,131.0)
(image3.jpg,131.0)
(image4.jpg,150.0)
(image5.jpg,140.0)

したがって、基本的には、平均ピクセル強度をキーとして使用してグループ化しました。

私の質問はこれです:

B の各行から要素を 1 つだけ抽出できますか? たとえば、次のようになります

(image1.jpg,131.0)
(image4.jpg,150.0)
...
4

1 に答える 1

0

ネストされたは、あなたが望むことFOREACHをするはずです:LIMIT

A = LOAD 'data' using PigStorage(',') AS (name:chararray,pixelIntensity:float);
B = GROUP A BY pixelIntensity;
C = FOREACH B {
    D = LIMIT A 1;
    GENERATE flatten(D);
};
STORE C INTO 'res';
于 2012-12-20T09:43:15.487 に答える