本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
示例:创建 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();