1

私のデータが次のように見えるとします

row1 cats val12 val13
row2 dogs val22 val23
row3 cats val32 val33
...

data = load 'file' AS (row:chararry, pets:charray, val2:charray, val3:charray);

「cats」行のみを保存するようにデータをフィルタリングします

felines = filter data by (pets matches 'cats');

「猫」を「ライオン」に変更

lions = foreach felines generate replace (pets, 'cats', 'lions');
dump lions;

(lions)
(lions)
...

私の目標は、テーブルに追加する新しい行を作成することです

newFelines = foreach lions generate rows, lions, val1, val2;
                                    Error ^^^^^
"Error during parsing. Scalars can be only used with projections"

次の新しい行を含むセットを取得するにはどうすればよいですか?

row1 lions val11 val12
row3 lions val31 val32

ティア、

4

1 に答える 1

3

1行ずつ:

「chararry」または「charray」データ型はありません。

data = load 'file' USING  PigStorage(' ')  AS 
    (row:chararray, pets:chararray, val2:chararray, val3:chararray);

「猫」の抽出:

felines = filter data by (pets matches 'cats');

「猫」を「ライオン」に置き換えるには、次のようにします。

lions = foreach felines generate row, REPLACE(pets, 'cats', 'lions'), val2, val3;

またはそのように:

lions = foreach felines generate row, 'lions', val2, val3;
于 2013-09-14T00:17:18.887 に答える