Amazon EMR
Amazon EMR リリースガイド

Amazon EMR 4.x での Pig の使用に関する考慮事項

Pig バージョン 0.14.0 は、Amazon EMR 4.x リリースバージョンを使用して作成されたクラスターにインストールされます。Pig は、Amazon EMR 5.0.0 でバージョン 0.16.0 にアップグレードされました。大きな違いは以下で説明します。

デフォルト実行エンジンの相違

Amazon EMR 4.x リリースバージョンの Pig バージョン 0.14.0 では、デフォルトの実行エンジンとして MapReduce を使用します。Pig 0.16.0 以降では、Apache Tez を使用します。exectype=mapreduce 設定分類で明示的に pig-properties と設定すると、MapReduce を使用できます。

削除された Pig ユーザー定義関数 (UDF)

Amazon EMR 4.x リリースバージョンの Pig で使用可能だったカスタム UDF は、Pig 0.16.0 以降は削除されました。ほとんどの UDF には代わりに使用できる同等の関数があります。削除された UDF と同等の関数のリストを次に示します。詳細については、Apache Pig サイトの「組み込み関数」を参照してください。

削除された UDF 同等の関数

FORMAT_DT(dtformat, date)

GetHour(date), GetMinute(date), GetMonth(date), GetSecond(date), GetWeek(date), GetYear(date), GetDay(date)

EXTRACT(string, pattern)

REGEX_EXTRACT_ALL(string, pattern)

REPLACE(string, pattern, replacement)

REPLACE(string, pattern, replacement)

DATE_TIME()

ToDate()

DURATION(dt, dt2)

WeeksBetween(dt, dt2), YearsBetween(dt, dt2), SecondsBetween(dt, dt2), MonthsBetween(dt, dt2), MinutesBetween(dt, dt2), HoursBetween(dt, dt2)

EXTRACT_DT(format, date)

GetHour(date), GetMinute(date), GetMonth(date), GetSecond(date), GetWeek(date), GetYear(date), GetDay(date)

OFFSET_DT(date, duration)

AddDuration(date, duration), SubtractDuration(date, duration)

PERIOD(dt, dt2)

WeeksBetween(dt, dt2), YearsBetween(dt, dt2), SecondsBetween(dt, dt2), MonthsBetween(dt, dt2), MinutesBetween(dt, dt2), HoursBetween(dt, dt2)

CAPITALIZE(string)

UCFIRST(string)

CONCAT_WITH()

CONCAT()

INDEX_OF()

INDEXOF()

LAST_INDEX_OF()

LAST_INDEXOF()

SPLIT_ON_REGEX()

STRSPLT()

UNCAPITALIZE()

LCFIRST()

次の UDF は削除され、同等物はありません。FORMAT()、LOCAL_DATE()、LOCAL_TIME()、CENTER()、LEFT_PAD()、REPEAT()、REPLACE_ONCE()、RIGHT_PAD()、STRIP()、STRIP_END()、STRIP_START()、SWAP_CASE()。

使用停止になった Grunt コマンド

Pig 0.16.0 以降ではいくつかの Grunt コマンドが使用停止されました。次の表に、Pig 0.14.0 の Grunt コマンドおよび最新バージョンで適用可能な同等のコマンドを示します。

Pig 0.14.0 と、同等の現在の Grunt コマンド

Pig 0.14.0 Grunt コマンド 0.16.0 以降の Pig Grunt コマンド

cat <non-hdfs-path>)

fs -cat <non-hdfs-path>;

cd <non-hdfs-path>;

同等物なし

ls <non-hdfs-path>; fs -ls <non-hdfs-path>;

move <non-hdfs-path> <non-hdfs-path>;

fs -mv <non-hdfs-path> <non-hdfs-path>;

copy <non-hdfs-path> <non-hdfs-path>;

fs -cp <non-hdfs-path> <non-hdfs-path>;

copyToLocal <non-hdfs-path> <local-path>;

fs -copyToLocal <non-hdfs-path> <local-path>;

copyFromLocal <local-path> <non-hdfs-path>;

fs -copyFromLocal <local-path> <non-hdfs-path>;

mkdir <non-hdfs-path>;

fs -mkdir <non-hdfs-path>;

rm <non-hdfs-path>;

fs -rm -r -skipTrash <non-hdfs-path>;

rmf <non-hdfs-path>;

fs -rm -r -skipTrash <non-hdfs-path>;

Non-HDFS ホームディレクトリについて削除された機能

Amazon EMR 4.x リリースバージョンの Pig 0.14.0 には、hadoop ユーザー以外のホームディレクトリを持たないユーザーが Pig スクリプトを実行できるようにする 2 つのメカニズムがあります。第 1 のメカニズムは、自動フォールバックで、ホームディレクトリが存在しない場合、ルートディレクトリに最初の作業ディレクトリを設定します。2 つめは、最初の作業ディレクトリを変更する pig.initial.fs.name プロパティです。

Amazon EMR 5.0.0 以降のバージョンでは、これらのメカニズムを使用できないので、ユーザーは HDFS 上のホームディレクトリが必要です。これは、hadoop ユーザーには当てはまりません。起動時にホームディレクトリがプロビジョニングされるからです。command-runner.jar を使用して別のユーザーが明示的に指定されていない限り、スクリプトは、Hadoop ユーザーにデフォルトの Hadoop jar ステップを使用して動作します。