Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Exemple : créer une HCatalog table et y écrire en utilisant Pig
Vous pouvez créer une HCatalog table et utiliser Apache Pig pour y écrire via HCat Storer à l'aide d'une source de données dans Amazon S3. HCatalog nécessite que vous désactiviez l'écriture directe, sinon 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 montre une table créée à l'aide de la HCat CLI, suivie de commandes exécutées dans le shell Grunt pour remplir la table à partir d'un exemple de fichier 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 de HCatalog scriptwikicount.q
, avec le contenu suivant, qui crée une HCatalog table nomméewikicount
.
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';
Utilisez une commande HCat CLI pour exécuter le script à partir du 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();