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