Ejemplo: crear una tabla de HCatalog y escribir en ella utilizando Pig
Puede crear una tabla de HCatalog y utilizar Apache Pig para escribir en ella mediante HCatStorer con un origen de datos en Amazon S3. HCatalog requiere que deshabilite la escritura directa o se produce un error en la operación sin notificación. Defina las configuraciones mapred.output.direct.NativeS3FileSystem y mapred.output.direct.EmrFileSystem en false utilizando la clasificación mapred-site o bien manualmente desde el shell de Grunt. En el siguiente ejemplo, se muestra una tabla creada con la CLI de HCat, seguida de comandos ejecutados en el intérprete de comandos de Grunt para rellenar la tabla a partir de un archivo de datos de ejemplo en Amazon S3.
Para ejecutar este ejemplo, conéctese al nodo maestro mediante SSH.
Cree un archivo de script de HCatalog, wikicount.q, con los siguientes contenidos, que crea una tabla de HCatalog denominada wikicount.
CREATE EXTERNAL TABLE IF NOT EXISTS wikicount( col1 string, col2 bigint ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\001' STORED AS ORC LOCATION 's3://amzn-s3-demo-bucket/hcat/wikicount';
Utilice un comando de CLI de HCat para ejecutar el script desde el archivo.
hcat -f wikicount.q
A continuación, inicie el shell de Grunt con la opción -useHCatalog, defina las configuraciones para deshabilitar la escritura directa, cargar datos desde una ubicación de S3 y, a continuación, escriba los resultados en la tabla 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();