Amazon EMR 4.x에서 Pig 사용 시 고려 사항 - Amazon EMR

Amazon EMR 4.x에서 Pig 사용 시 고려 사항

Amazon EMR 4.x 릴리스 버전을 사용하여 만든 클러스터에 Pig 버전 0.14.0이 설치됩니다. 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 사이트에서 Built-in functions를 참조하세요.

삭제된 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(), STRIIP_END(), STRIP_START(), SWAP_CASE()와 같은 UDF는 삭제되었습니다.

사용 중지된 Grunt 명령 사용

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 홈 디렉터리에서 제거된 기능

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

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