

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

# 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\$1DT(dtformat, 날짜)  |  GetHour(날짜), GetMinute(날짜), GetMonth(날짜), GetSecond(날짜), GetWeek(날짜), GetYear(날짜), GetDay(날짜)  | 
|  EXTRACT(문자열, 패턴)  |  REGEX\$1EXTRACT\$1ALL(문자열, 패턴)  | 
|  REPLACE(문자열, 패턴, 대체)  |  REPLACE(문자열, 패턴, 대체)  | 
|  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(형식, 날짜)  |  GetHour(날짜), GetMinute(날짜), GetMonth(날짜), GetSecond(날짜), GetWeek(날짜), GetYear(날짜), GetDay(날짜)  | 
|  OFFSET\$1DT(날짜, 기간)  |  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\$1WITH()  |  CONCAT()  | 
|  INDEX\$1OF()  |  INDEXOF()  | 
|  LAST\$1INDEX\$1OF()  |  LAST\$1INDEXOF()  | 
|  SPLIT\$1ON\$1REGEX()  |  STRSPLT()  | 
|  UNCAPITALIZE()  |  LCFIRST()  | 

동일한 사항 없는 FORMAT(), LOCAL\$1DATE(), LOCAL\$1TIME(), CENTER(), LEFT\$1PAD(), REPEAT(), REPLACE\$1ONCE(), RIGHT\$1PAD(), STRIP(), STRIP\$1END(), STRIP\$1START(), SWAP\$1CASE()와 같은 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 사용자로 지정됩니다.