Exemple : création d'une table HCatalog et écriture dans celle-ci avec Pig - Amazon EMR

Exemple : création d'une table HCatalog et écriture dans celle-ci avec Pig

Vous pouvez créer une table HCatalog et utiliser Apache Pig pour y écrire par le biais de HCatStorer à l'aide d'une source de données dans Amazon S3. HCatalog exige que vous désactiviez l'écriture directe ou l'opération échoue silencieusement. Définissez les configurations mapred.output.direct.NativeS3FileSystem et mapred.output.direct.EmrFileSystem sur false à l'aide de la classification mapred-site, ou manuellement depuis le shell Grunt. L'exemple suivant illustre une table créée à l'aide de l'interface de ligne de commande HCat, suivie des commandes exécutées dans le shell Grunt pour remplir la table à partir d'un fichier d'exemple de données dans Amazon S3.

Pour exécuter cet exemple, il est nécessaire de se connecter au nœud principal à l'aide de SSH.

Créez un fichier script HCatalog, wikicount.q, avec le contenu suivant, qui crée une table HCatalog nommée 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';

Utilisez une commande CLI HCat pour exécuter le script depuis le fichier.

hcat -f wikicount.q

Ensuite, démarrez le shell Grunt avec l'option -useHCatalog, définissez des configurations pour désactiver l'écriture directe, chargez les données depuis un emplacement S3, puis écrivez les résultats dans la table 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();