Amazon EMR 4.x で Pig を使用するための考慮事項 - 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 は、同等のものなしで削除されました。フォーマット (), ローカル日付 (), ローカル時刻 (), 中央 (), 左パッド (), リピート (), REPLACE_ONCE (), RIGHT_PAD (), ストリップ (), 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>;

HDFS 以外のホームディレクトリの機能が削除されました

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

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