翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 コマンド | 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 ステップを使用して動作します。