Considerazioni sull'utilizzo di Pig su Amazon EMR 4.x - Amazon EMR

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Considerazioni sull'utilizzo di Pig su Amazon EMR 4.x

Pig versione 0.14.0 è installato su cluster creati utilizzando versioni del rilascio di Amazon EMR 4.x. Pig è stato aggiornato alla versione 0.16.0 in Amazon EMR 5.0.0. Di seguito vengono descritte le differenze significative.

Motore di esecuzione predefinito diverso

Pig versione 0.14.0 su versioni del rilascio di Amazon EMR 4.x utilizza MapReduce come motore di esecuzione predefinito. Pig versione 0.16.0 e successive utilizzano Apache Tez. Puoi impostare in maniera esplicita exectype=mapreduce nella classificazione di configurazione pig-properties per utilizzare MapReduce.

Funzioni Pig definite dall'utente (UDF) interrotte

Le UDF personalizzate che erano disponibili in Pig su versioni del rilascio 4.x di Amazon EMR sono state interrotte a partire da Pig 0.16.0. La maggior parte delle UDF dispongono di funzioni equivalenti che è possibile utilizzare. Nella tabella seguente vengono elencate le FDU interrotte e le funzioni equivalenti. Per ulteriori informazioni, consulta Built-in functions (Funzioni integrate) sul sito Apache Pig.

FDU interrotta Funzione equivalente

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

Le seguenti FDU sono state interrotte senza un equivalente: FORMAT(), LOCAL_DATE(), LOCAL_TIME(), CENTER(), LEFT_PAD(), REPEAT(), REPLACE_ONCE(), RIGHT_PAD(), STRIP(), STRIP_END(), STRIP_START(), SWAP_CASE().

Comandi Grunt non più disponibili

Alcuni comandi Grunt non sono più disponibili a partire da Pig 0.16.0. Nella tabella seguente vengono elencati i comandi Grunt in Pig 0.14.0 e i comandi equivalenti nella versione corrente, dove applicabile.

Pig 0.14.0 e comandi Grunt correnti equivalenti
Comando Grunt Pig 0.14.0 Comando Grunt in Pig 0.16.0 e versioni successive

cat <non-hdfs-path>)

fs -cat <non-hdfs-path>;

cd <non-hdfs-path>;

Nessun equivalente

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

Funzionalità rimosse per home directory non HDFS

Pig 0.14.0 su versioni del rilascio 4.x di Amazon EMR dispone di due meccanismi per consentire a utenti diversi dall'utente hadoop, che non dispongono di home directory, di eseguire script Pig. Il primo meccanismo è un fallback automatico che consente di impostare la directory di lavoro iniziale sulla directory principale se la home directory non esiste. Il secondo è una proprietà pig.initial.fs.name che consente di modificare la directory di lavoro iniziale.

Questi meccanismi non sono disponibili a partire da Amazon EMR versione 5.0.0 e gli utenti devono disporre di una home directory su HDFS. Ciò non si applica all'utente hadoop, perché una home directory viene fornita all'avvio. Gli script eseguiti utilizzando fasi jar Hadoop sono impostati per default sull'utente Hadoop, a meno che non venga specificato in modo esplicito un altro utente utilizzando command-runner.jar.