2012-12-09 91 views
2

我有兩個輸入文件smt.txt和smo.txt。 jar文件讀取文本文件並根據java文件中描述的某些規則拆分數據。 pig文件將這些數據放入輸出文件中,並進行mapreduce。如何在豬文件中使用.jar

register 'maprfs:///user/username/fl.jar'; 
DEFINE FixedLoader fl(); 

mt = load 'maprfs:///user/username/smt.txt' using FixedLoader('-30','30-33',...........) AS (.........); 

mo = load 'maprfs:///user/username/smo.txt*' using FixedLoader('-30','30-33',.....) AS (......); 

store mt into 'maprfs:///user/username/mt_out' using JsonStorage(); 
store mo into 'maprfs:///user/username/mo_out' using JsonStorage(); 

和一部分java代碼,如下所示。 (方法的內容都沒有neccessary我相信):

package com.mapr.util; 

import org.apache.hadoop.mapreduce.lib.input.*; 
import org.apache.hadoop.mapreduce.*; 
import org.apache.hadoop.io.*; 
import org.apache.pig.*; 
import org.apache.pig.data.*; 
import org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.*; 
import java.util.*; 
import java.io.*; 

public class FixedLoader extends LoadFunc 
{ 

............ 

} 

當我用命令「豬-x MapReduce的sample.pig」一個端子短運行此程序的豬,我給了一個錯誤信息:

錯誤org.apache.pig.tools.grunt.Grunt - 錯誤1070:無法使用導入來解析com.mapr.util.FixedLoader:[,org.apache.pig.builtin。,org.apache.pig.impl .builtin。]

如何將這些項目導入到我的項目中或者是否存在對r的任何建議/解決方案聯合國這個計劃?

回答

0

你需要用它的全包名定義FixedLoader

register 'maprfs:///user/username/fl.jar'; 
DEFINE FixedLoader com.mapr.util.FixedLoader(); 
... 

而且註冊所有在您的自定義UDF中使用的第三方的依賴罐子。

+0

感謝您的建議,但我決定在豬腳本中做所有工作,所以我不再需要jar文件。然而,我試圖給出完整的包名稱相同的代碼,但我認爲我的計算機中仍然存在一些第三方依賴關係。 – erbileren