

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon EMR 4.x에서 Pig 사용 시 고려 사항
<a name="emr-Pig-4x"></a>

Amazon EMR 4.x 릴리스 버전을 사용하여 만든 클러스터에 Pig 버전 0.14.0이 설치됩니다. 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 사이트에서 [Built-in functions](https://pig.apache.org/docs/r0.16.0/func.html)를 참조하세요.


| 삭제된 UDF | 동등한 함수 | 
| --- | --- | 
| FORMAT\_DT(dtformat, 날짜) | GetHour(날짜), GetMinute(날짜), GetMonth(날짜), GetSecond(날짜), GetWeek(날짜), GetYear(날짜), GetDay(날짜) | 
| EXTRACT(문자열, 패턴) | REGEX\_EXTRACT\_ALL(문자열, 패턴) | 
| REPLACE(문자열, 패턴, 대체) | REPLACE(문자열, 패턴, 대체) | 
| 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(형식, 날짜) | GetHour(날짜), GetMinute(날짜), GetMonth(날짜), GetSecond(날짜), GetWeek(날짜), GetYear(날짜), GetDay(날짜) | 
| OFFSET\_DT(날짜, 기간) | AddDuration(날짜, 기간), SubtractDuration(날짜, 기간) | 
| PERIOD(dt, dt2) | WeeksBetween(dt, dt2), YearsBetween(dt, dt2), SecondsBetween(dt, dt2), MonthsBetween(dt, dt2), MinutesBetween(dt, dt2), HoursBetween(dt, dt2) | 
| CAPITALIZE(문자열) | UCFIRST(문자열) | 
| CONCAT\_WITH() | CONCAT() | 
| INDEX\_OF() | INDEXOF() | 
| LAST\_INDEX\_OF() | LAST\_INDEXOF() | 
| SPLIT\_ON\_REGEX() | STRSPLT() | 
| UNCAPITALIZE() | LCFIRST() | 

동일한 사항 없는 FORMAT(), LOCAL\_DATE(), LOCAL\_TIME(), CENTER(), LEFT\_PAD(), REPEAT(), REPLACE\_ONCE(), RIGHT\_PAD(), STRIP(), STRIP\_END(), STRIP\_START(), SWAP\_CASE()와 같은 UDF는 삭제되었습니다.

## 사용 중지된 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>; | 

## 비HDFS 홈 디렉터리에서 제거된 기능
<a name="emr-Pig-users-4x"></a>

Amazon EMR 4.x 릴리스 버전의 Pig 0.14.0에서는 두 가지 메커니즘을 통해 홈 디렉터리가 없는 `hadoop` 사용자 이외의 사용자가 Pig 스크립트를 실행할 수 있습니다. 첫 번째 방법은 홈 디렉터리가 존재하지 않는 경우 초기 작업 디렉터리를 루트 디렉터리로 설정하는 자동 폴백이고, 둘째 방법은 초기 작업 디렉터리를 변경할 수 있는 `pig.initial.fs.name` 속성입니다.

Amazon EMR 버전 5.0.0부터는 이 두 가지 방법을 사용할 수 없으며 사용자는 HDFS에 홈 디렉터리가 있어야 합니다. `hadoop` 사용자에게는 시작 시 홈 디렉터리가 할당되기 때문에 적용되지 않습니다. `command-runner.jar`를 사용하여 다른 사용자가 명시적으로 지정되지 않는 한, Hadoop jar 단계를 사용하여 스크립트를 실행하면 기본적으로 Hadoop 사용자로 지정됩니다.