2014-09-18 100 views
0

我想將小avro文件合併到一個avro文件中,使用pig保持相同的模式。將avro文件合併爲一個

我試着這樣做:

REGISTER avro-1.7.2.jar 

a = load '$SOURCE' using org.apache.pig.piggybank.storage.avro.AvroStorage(); 
store a into '$TARGET' using org.apache.pig.piggybank.storage.avro.AvroStorage(); 

但失敗,錯誤如下:

ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1070: Could not resolve org.apache.pig.piggybank.storage.avro.AvroStorage using imports: [, org.apache.pig.builtin., org.apache.pig.impl.builtin.] 

如何合併小的Avro文件到使用豬一個文件?

+2

你的問題不在於結合2個文件,但是關於不正確解析AvroStorage()。你確定avro jar存在於正確的位置嗎?也許指定jar的完全合格的路徑可能會有所幫助? – 2014-09-18 18:38:26

回答

1

首先,AvroStorage是piggybank的一部分,所以您還需要註冊piggybank.jar。其次,使用AvroStorage請求額外的庫,所以你需要註冊json-simple-1.1.1.jar。其次,使用AvroStorage請求額外的庫,所以你需要註冊json-simple-1.1.1.jar。

REGISTER json-simple-1.1.1.jar 

第三,如果你想用最新的Avro的版本,你需要的Avro-mapred.jar

我在豬的腳本如下代碼:

REGISTER lib/piggybank-0.13.0.jar; 
REGISTER lib/avro-1.7.7.jar; 
REGISTER lib/avro-mapred-1.7.7.jar; 
REGISTER lib/json-simple-1.1.1.jar;