Überlegungen für die Verwendung von Pig in Amazon EMR 4.x - Amazon EMR

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Überlegungen für die Verwendung von Pig in Amazon EMR 4.x

Pig-Version 0.14.0 ist auf Clustern installiert, die mit Amazon EMR 4.x-Versionen erstellt wurden. Für Pig wurde in Amazon EMR 5.0.0 ein Upgrade auf Version 0.16.0 durchgeführt. Die wesentlichen Unterschiede werden unten erläutert.

Unterschiedliche Standard-Ausführungs-Engine

Pig-Version 0.14.0 auf Amazon EMR 4.x-Versionen verwendet MapReduce als Standard-Ausführungs-Engine. Pig 0.16.0 und höher verwenden Apache Tez. Sie können explizit exectype=mapreduce in der Konfigurationsklassifizierung pig-properties festlegen, um MapReduce zu verwenden.

Gelöschte benutzerdefinierte Pig-Funktionen (UDFs)

Benutzerdefinierte UDFs, die in Pig auf Amazon EMR 4.x-Versionen waren, waren ab Pig 0.16.0 nicht mehr enthalten. Die meisten UDFs weisen ähnliche Funktionen auf, die Sie stattdessen verwenden können. Die folgende Tabelle listet gelöschte UDFs und ähnliche Funktionen auf. Weitere Informationen finden Sie unter Integrierte Funktionen auf der Apache Pig-Website.

Gelöschte UDF Gleichwertige Funktion

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()

Die folgenden UDFs wurden ohne gleichwertige Funktionen entfernt: FORMAT(), LOCAL_DATE(), LOCAL_TIME(), CENTER(), LEFT_PAD(), REPEAT(), REPLACE_ONCE(), RIGHT_PAD(), STRIP(), STRIIP_END(), STRIP_START(), SWAP_CASE().

Nicht mehr enthaltene Grunt-Befehle

Einige Grunt-Befehle werden ab Pig 0.16.0 nicht mehr angeboten. In der folgenden Tabelle sind die Grunt-Befehle in Pig 0.14.0 und ihre entsprechenden Befehle (sofern vorhanden) in der aktuellen Version aufgeführt.

Pig 0.14.0 und gleichwertige aktuelle Grunt-Befehle
Grunt-Befehl in Pig 0.14.0 Pig Grunt-Befehl in 0.16.0 und höher

cat <non-hdfs-path>)

fs -cat <non-hdfs-path>;

cd <non-hdfs-path>;

Keine Entsprechung

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>;

Entfernte Funktionen für Nicht-HDFS-Stammverzeichnisse

Pig 0.14.0 in Amazon EMR 4.x-Versionen verfügt über zwei Mechanismen, um anderen Benutzern als dem hadoop-Benutzer, die keine Stammverzeichnisse besitzen, das Ausführen von Pig-Skripten zu ermöglichen. Der erste Mechanismus ist ein automatisches Fallback , mit dem das anfängliche Arbeitsverzeichnis auf das Stammverzeichnis festgelegt wird, wenn kein Stammverzeichnis vorhanden ist. Der zweite ist eine pig.initial.fs.name-Eigenschaft, über die Sie das anfängliche Arbeitsverzeichnis ändern können.

Diese Mechanismen sind beginnend mit Amazon EMR-Version 5.0.0 nicht verfügbar, und Benutzer müssen ein Stammverzeichnis in HDFS haben. Dies gilt nicht für hadoop-Benutzer, da hier ein Stammverzeichnis beim Starten bereitgestellt wird. Bei Skriptläufen, bei denen Hadoop-JAR-Schritte verwendet werden, wird standardmäßig der Hadoop-Benutzer vorgeschlagen, es sei denn, es ist explizit ein anderer Benutzer über command-runner.jar angegeben.