示例:创建一个 HCatalog 表并使用 Pig 写入该表 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

示例:创建一个 HCatalog 表并使用 Pig 写入该表

您可以创建一个 HCatalog 表并使用 Apache Pig 对此表进行写入,方式是通过使用 Amazon S3 中的数据源的 HCatStorer。HCatalog 要求您禁用直接写入,否则操作将无提示地失败。要同时将 mapred.output.direct.NativeS3FileSystem mapred.output.direct.EmrFileSystem 配置设置为 false,可以使用 mapred-site 分类,或者通过 Grunt shell 手动操作。以下示例显示一个使用 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();