Esempio: Creare una tabella HCatalog e scrivervi con Pig - Amazon EMR

Esempio: Creare una tabella HCatalog e scrivervi con Pig

Puoi creare una tabella HCatalog e utilizzare Apache Pig per scrivervi sopra tramite HCatStorer utilizzando un'origine dati in Amazon S3. Per utilizzare HCatalog, occorre disabilitare la scrittura diretta, altrimenti l'operazione non verrà completata e non verrà inviato alcun errore. Imposta entrambe le configurazioni mapred.output.direct.NativeS3FileSystem e mapred.output.direct.EmrFileSystem su false tramite la classificazione mapred-site oppure manualmente dalla shell Grunt. Nell'esempio seguente viene mostrata una tabella creata tramite la CLI HCat, seguita dai comandi eseguiti nella shell Grunt per compilare la tabella a partire da un file di dati di esempio in Amazon S3.

Per eseguire questo esempio, connettiti al nodo master tramite SSH.

Crea un file di script HCatalog, wikicount.q, con i contenuti seguenti, che creerà una tabella HCatalog denominata wikicount.

CREATE EXTERNAL TABLE IF NOT EXISTS wikicount( col1 string, col2 bigint ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\001' STORED AS ORC LOCATION 's3://MyBucket/hcat/wikicount';

Utilizza un comando della CLI HCat per eseguire lo script dal file.

hcat -f wikicount.q

Quindi, avvia la shell Grunt con l'opzione -useHCatalog, imposta le configurazioni per disabilitare la scrittura diretta, carica i dati da un percorso S3 e scrivi i risultati sulla tabella wikicount.

pig -useHCatalog SET mapred.output.direct.NativeS3FileSystem false; SET mapred.output.direct.EmrFileSystem false; A = LOAD 's3://support.elasticmapreduce/training/datasets/wikistats_tiny/' USING PigStorage(' ') AS (Site:chararray, page:chararray, views:int, total_bytes:long); B = GROUP A BY Site; C = FOREACH B GENERATE group as col1, COUNT(A) as col2; STORE C INTO 'wikicount' USING org.apache.hive.hcatalog.pig.HCatStorer();