Considérations relatives à l'utilisation de Pig sur Amazon EMR 4.x - Amazon EMR

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Considérations relatives à l'utilisation de Pig sur Amazon EMR 4.x

La version Pig 0.14.0 est installée sur les clusters créés avec les versions Amazon EMR 4.x. Pig a été mis à niveau à la version 0.16.0 dans Amazon EMR 5.0.0. Les différences importantes sont discutées ci-dessous.

Moteur d'exécution par défaut différent

La version Pig 0.14.0 sur Amazon EMR 4.x utilise MapReduce comme moteur d'exécution par défaut. Pig 0.16.0 et les versions ultérieures utilisent Apache Tez. Vous pouvez explicitement définir exectype=mapreduce dans la pig-properties classification de configuration pour utiliser MapReduce.

Fonctions Pig définies par l'utilisateur (UDF) abandonnées

Les fonctions définies par l'utilisateur qui étaient disponibles dans Pig sur les versions 4.x d'Amazon EMR ont été abandonnées à partir de la version Pig 0.16.0. La plupart des fonctions définies par l'utilisateur ont des fonctions équivalentes que vous pouvez utiliser à la place. Le tableau suivant répertorie les fonctions définies par l'utilisateur abandonnées et leur fonction équivalente. Pour plus d'informations, consultez Fonctions intégrées sur le site Apache Pig.

Fonctions définies par l'utilisateur abandonnées Fonction équivalente

FORMAT_DT (formatdt, date)

GetHour(date), GetMinute(date), GetMonth(date), GetSecond(date), GetWeek(date), GetYear(date), GetDay(date)

EXTRACT(chaîne, modèle)

REGEX_EXTRACT_ALL(chaîne, modèle)

REPLACE(chaîne, modèle, remplacement)

REPLACE(chaîne, modèle, remplacement)

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, durée)

AddDuration(date, durée), SubtractDuration(date, durée)

PERIOD(dt, dt2)

WeeksBetween(dt, dt2), YearsBetween(dt, dt2), SecondsBetween(dt, dt2), MonthsBetween(dt, dt2), MinutesBetween(dt, dt2), HoursBetween(dt, dt2)

CAPITALIZE(chaîne)

UCFIRST(chaîne)

CONCAT_WITH()

CONCAT()

INDEX_OF()

INDEXOF()

LAST_INDEX_OF()

LAST_INDEXOF()

SPLIT_ON_REGEX()

STRSPLT()

UNCAPITALIZE()

LCFIRST()

Les fonctions UDF suivantes ont été abandonnées sans équivalent : FORMAT(), LOCAL_DATE(), LOCAL_TIME(), CENTER(), LEFT_PAD(), REPEAT(), REPLACE_ONCE(), RIGHT_PAD(), STRIP(), STRIP_END(), STRIP_START(), SWAP_CASE().

Commandes Grunt abandonnées

Certaines commandes Grunt ont été suspendues à commencer par Pig 0.16.0. Le tableau suivant répertorie les commandes Grunt sous Pig 0.14.0 et les commandes équivalentes dans la version actuelle, le cas échéant.

Commandes Grunt Pig 0.14.0 et commandes équivalentes de la version de Pig actuelle
Commande Grunt Pig 0.14.0 Commande Grunt sous Pig 0.16.0 et version ultérieure

cat <non-hdfs-path>)

fs -cat <non-hdfs-path>;

cd <non-hdfs-path>;

Pas d'équivalent

ls <non-hdfs-path>; fs -ls <non-hdfs-path>;

déplacer <non-hdfs-path> <non-hdfs-path>;

fs -mv <non-hdfs-path> <non-hdfs-path>;

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

Capacités supprimées pour les répertoires de base non HDFS

Pig 0.14.0 sur les versions 4.x d'Amazon EMR possède deux mécanismes pour autoriser les utilisateurs autres que l'utilisateur hadoop, qui ne disposent pas de répertoires de base, à exécuter des scripts Pig. Le premier mécanisme est un mécanisme de secours automatique qui définit le répertoire de travail initial dans le répertoire racine, si le répertoire de base n'existe pas. Le second mécanisme est une propriété pig.initial.fs.name qui vous permet de modifier le répertoire de travail initial.

Ces mécanismes ne sont pas disponibles à partir des versions Amazon EMR 5.0.0. C'est pourquoi les utilisateurs doivent disposer d'un répertoire de base sur un HDFS. Cela ne s'applique pas à l'utilisateur hadoop, car un répertoire de base est provisionné lors du lancement. Les scripts qui s'exécutent à l'aide des étapes JAR Hadoop utilisent par défaut l'utilisateur Hadoop, sauf si un autre utilisateur est explicitement spécifié à l'aide de command-runner.jar.