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

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

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

你可以创建一个 HCatalog 表,然后使用 Apache Pig 使用 Amazon S3 中的数据源通过 HCat Storer 写入该表。 HCatalog 要求您禁用直接写入,否则操作会静默失败。要同时将 mapred.output.direct.NativeS3FileSystem mapred.output.direct.EmrFileSystem 配置设置为 false,可以使用 mapred-site 分类,或者通过 Grunt shell 手动操作。以下示例显示了使用 HCat CLI 创建的表,然后是在 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';

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