本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
示例:创建HCatalog表并使用 Pig 写入该表
您可以创建一个HCatalog表,然后使用 Apache Pig 通过使用 Amazon S3 中的数据源对其HCatStorer进行写入。HCatalog要求您禁用直接写入,否则操作会静默失败。要同时将 mapred.output.direct.NativeS3FileSystem
和 mapred.output.direct.EmrFileSystem
配置设置为 false
,可以使用 mapred-site
分类,或者通过 Grunt shell 手动操作。以下示例显示了使用创建的表 HCatCLI,然后是在 Grunt shell 中执行的命令,用于从 Amazon S3 中的示例数据文件填充表。
要运行此示例,请使用连接到主节点SSH。
创建包含以下内容的HCatalog脚本文件wikicount.q
,该文件将创建一个名为的HCatalog表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';
使用HCatCLI命令从文件中执行脚本。
hcat -f wikicount.q
接下来,使用 -useHCatalog
选项启动 Grunt shell,将配置设置为禁用直接写入,从 S3 位置加载数据,然后将结果写入 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();