6

「3」のような数字のフィールドを含むcsvファイルを読みました。PigLatin でこのフィールドを「3」から 3 に変換できますか? SUM() - 関数を使用するために必要です。

ご協力いただきありがとうございます!

4

3 に答える 3

9

REPLACEで単に削除するのはどう"ですか?

例えば:

data =
    LOAD 'data.txt' AS (num:CHARARRAY);

numbers =
    FOREACH data
    GENERATE
        (INT) REPLACE(num, '\\"', '');

GROUPその後、することができますSUM

利点の 1 つは、返された文字列を直接数値にキャストできることです (バッグを処理する必要はありません)。REGEX_EXTRACTを使用して同じことを行うこともできます。

于 2011-01-11T19:17:59.990 に答える
6

このTOKENIZE関数は、単語区切りと見なされるさまざまな文字で文字列を分割します。そのうちの 1 つは引用符です。したがって、「3」をトークン化して真ん中の項目を取ると、ちょうど 3 になるはずです。

于 2010-12-08T16:13:22.590 に答える
3

引用符を囲むUDFを作成するか、JacobMのアプローチを使用できます。

ただし、その後、:または。にキャストする必要chararray '3'intあり(int)$1ます(int)myvalue。このように使用できますsum

http://pig.apache.org/docs/r0.5.0/piglatin_reference.html#Cast+Operators

于 2010-12-08T19:33:00.517 に答える