2

timeフィールドが のように見え2013-01-01T00:00:00.000Zpiggybank.jarすでにインポートされ、コマンドが定義されていると仮定するとEXTRACT(DEFINE EXTRACT org.apache.pig.piggybank.evaluation.string.EXTRACT();) フィールドを抽出する最良の方法は何year, month, day, hour, minute, secondですか? それが私がこれまで行ってきたことです:

data = FOREACH data GENERATE FLATTEN(EXTRACT(time, '(\\d+)-(\\d+)-(\\d+)T(\\d+):(\\d+):(\\d+).(\\s+)'))
        AS (
            year: int,
            month: int,
            day: int,
            hour: int,
            minute: int,
            second: int,
            tail: chararray
        );
4

1 に答える 1

4

Pig 0.11 以降、DateTime タイプを使用できます。

A = LOAD 'data' AS (date:chararray);
B = FOREACH A GENERATE ToDate(date) AS date;
C = FOREACH B GENERATE GetMonth(date) as month;

ここでこれらの関数を使用できます: DateTime 関数

0.11 を使用していない場合は、UDF を作成するか、投稿した正規表現に頼ることができます。

于 2013-04-18T14:47:40.213 に答える