本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
範例:使用 Pig 建立 HCatalog 資料表並對其進行寫入
您可以建立 HCatalog 資料表,並使用 Apache Pig 透過 HCatStorer 使用 Amazon S3 中的資料來源向其寫入資料。HCatalog 需要您停用直接寫入,否則該操作將會失敗且無提示。使用 mapred.output.direct.NativeS3FileSystem
分類,或手動在 Grunt shell 中將 mapred.output.direct.EmrFileSystem
和 false
組態都設為 mapred-site
。下列範例顯示了使用 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://
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();