

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

# 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\_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 コマンド
<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 ステップを使用して動作します。