Amazon EMR
Amazon EMR 版本指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

示例:使用 Pig 创建一个 HCatalog 表并对此表进行写入

您可以创建一个 HCatalog 表并使用 Apache Pig 对此表进行写入,方式是通过使用 Amazon S3 中的数据源的 HCatStorer。HCatalog 要求您禁用直接写入功能,否则操作将失败且无提示。使用 mapred.output.direct.NativeS3FileSystem 分类或手动从 Grunt shell 中将 mapred.output.direct.EmrFileSystemfalse 配置设置为 mapred-site。以下示例显示一个使用 HCat CLI 创建的表,后跟 Grunt shell 中执行的命令 (用于从 Amazon S3 中的示例数据文件填充表)。

要运行此示例,请使用 SSH 连接到主节点

使用以下内容创建 HCatalog 脚本文件 wikicount.q,这将创建一个名为 wikicount 的 HCatalog 表。

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';

使用 HCat CLI 命令从文件中执行此脚本。

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