本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
示例:创建一个 HCatalog 表并使用 Pig 写入该表
你可以创建 HCatalog 表,然后使用 Apache Pig 使用 Amazon S3 中的数据源CatStorer 通过 H 写入该表。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();