

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

# 示例：创建 HCatalog 表并使用 Pig 写入该表
<a name="emr-hcatalog-pig"></a>

你可以创建一个 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 连接到主节点](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-connect-master-node-ssh.html)。

创建包含以下内容的 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();
```