

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon EMR 4.x での Pig の使用に関する考慮事項
<a name="emr-Pig-4x"></a>

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

## デフォルト実行エンジンの相違
<a name="emr-Pig-engine-4x"></a>

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

## 削除された Pig ユーザー定義関数 (UDF)
<a name="emr-Pig-udf-4x"></a>

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


| 削除された UDF | 同等の関数 | 
| --- | --- | 
|  FORMAT\$1DT(dtformat, date)  |  GetHour(date), GetMinute(date), GetMonth(date), GetSecond(date), GetWeek(date), GetYear(date), GetDay(date)  | 
|  EXTRACT(string, pattern)  |  REGEX\$1EXTRACT\$1ALL(string, pattern)  | 
|  REPLACE(string, pattern, replacement)  |  REPLACE(string, pattern, replacement)  | 
|  DATE\$1TIME()  |  ToDate()  | 
|  DURATION(dt, dt2)  |  WeeksBetween(dt, dt2), YearsBetween(dt, dt2), SecondsBetween(dt, dt2), MonthsBetween(dt, dt2), MinutesBetween(dt, dt2), HoursBetween(dt, dt2)  | 
|  EXTRACT\$1DT(format, date)  |  GetHour(date), GetMinute(date), GetMonth(date), GetSecond(date), GetWeek(date), GetYear(date), GetDay(date)  | 
|  OFFSET\$1DT(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\$1WITH()  |  CONCAT()  | 
|  INDEX\$1OF()  |  INDEXOF()  | 
|  LAST\$1INDEX\$1OF()  |  LAST\$1INDEXOF()  | 
|  SPLIT\$1ON\$1REGEX()  |  STRSPLT()  | 
|  UNCAPITALIZE()  |  LCFIRST()  | 

次の UDF は削除され、同等物はありません。FORMAT()、LOCAL\$1DATE()、LOCAL\$1TIME()、CENTER()、LEFT\$1PAD()、REPEAT()、REPLACE\$1ONCE()、RIGHT\$1PAD()、STRIP()、STRIP\$1END()、STRIP\$1START()、SWAP\$1CASE()。

## 使用停止になった Grunt コマンド
<a name="emr-pig-gruntcmd-4x"></a>

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 ホームディレクトリについて削除された機能
<a name="emr-Pig-users-4x"></a>

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 ステップを使用して動作します。