這篇文章將為大家詳細講解有關pig中用戶自定義函數的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
用戶自定義函數(UDF)
public abstract class EvalFunc<T> {
public abstract T exec(Tuple input) throws IOException;
public List<FuncSpec> getAvgToFuncMapping() throws FrontendException;
public FuncSpec outputSchema() throws FrontendException; }
輸入元組的字段包含傳遞給函數的表達式,輸出是泛型;對于過濾函數輸出就是Boolean類型。建議盡量在
getAvgToFuncMapping()/outputSchema()申明輸入和輸出數據的類型,以便Pig進行類型轉換或過濾不匹配類型的錯誤值。
Grunt>REGISTER pig-examples.jar;
DEFINE isGood org.hadoopbook.pig.IsGoodQuality();
加載UDF
public LoadFunc {
public void setLocation(String location, Job job);
public InputFormat getInputFormat();
public void prepareToRead(RecordReader reader, PigSplit split);
public Tuple next() throws IOException; }
類似Hadoop,Pig的數據加載先于mapper的運行,所以保證數據可以被分割成能被各個mapper獨立處理的部分非常重要。從Pig 0.7開始,
加載和存儲函數接口已經進行了大幅修改,以便與Hadoop的InputFormat和OutputFormat類基本一致。
Grunt>Register loadfunc.jar
Define customLoad org.hadoopbook.pig.loadfunc()
records = load ‘input/sample.txt’ using customLoad(‘16-19, 88-92, 93-93’)
as (year:int, temperature:int, quality:int);
關于“pig中用戶自定義函數的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。