2012-12-09 2 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 코드의 일부. (방법의 내용은 내가 믿는이 켜지지되지 않습니다) :

: 나는 명령 "돼지 -x 맵리 듀스 sample.pig"와 teminal이 돼지 프로그램을 실행하면, 나는 오류 메시지를 준

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 
{ 

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

} 

오류 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

조언 해 주셔서 감사합니다. 그러나 돼지 스크립트로 모든 작업을하기로 결정 했으므로 더 이상 파일을 병할 필요가 없습니다. 그러나 전체 패키지 이름을 제공하는 것과 동일한 코드를 시도했지만 여전히 제 3 자 종속성이 내 컴퓨터에 없다고 생각합니다. – erbileren

관련 문제