2012-06-07 4 views
0

Java에서 첫 번째 Pig UDF를 빌드하려고하는데 Eclipse로 빌드 할 때 함수를 호출하는 데 문제가 있습니다 (클래스 경로에 pig 0.10.0 jar 파일이 있음). 소스 파일은 /com/foo/bar/pig/IsInternal.java이고 클래스 파일은 Eclipse에 의해 /bin/com/foo/bar/pig/IsInternal.class에 있습니다.Pig UDF for Java : 오류 1070

내 코드는 다음과 같습니다

package com.foo.bar.pig; 

// ... imports ... 

public class IsInternal extends FilterFunc { 
    public Boolean exec(Tuple input) throws IOException { 
     // ... code here ... 
     return true; // or false 
    } 
} 

내가 컴파일 한 후, 나는 JAR로 모두를 포장하는 단지 프로젝트 디렉토리 외부에서 jar -cf PiggyBank.jar BiggyBank를 실행합니다. 나는 다음과 같은 오류가 발생하는 시점에서

REGISTER /full/path/to/PiggyBank.jar 
DEFINE isInternal com.foo.bar.pig.IsInternal(); 

A = LOAD '/some/file/in/hdfs' USING PigStorage(); 
B = FILTER A BY isInternal($1); 

: 나는 돼지를 실행할 때, 나는 꿀꿀 거리는 소리 쉘에서 다음을 시도

ERROR 1070: Could not resolve com.foo.bar.pig.IsInternal using imports: [, org.apache.pig.builtin, org.apache.pig.impl.builtin.] 

자바 코드 자체는 괜찮 (내가 그것을 테스트했습니다) , 그리고 행운없이 DEFINE에서 다른 클래스 경로로 놀아 보려고했습니다. 나는 온라인으로 도움을받지 못했다. 어떻게 해결할 수 있을까요?

답변

1

나는 손으로 .jar로 포장하는 것에 대해 조금 기이합니다. 이클립스 프로젝트에 참여시키고 거기에서 내보낼 수 있습니까?

또한 jar의 디렉토리 구조를 확인할 수 있습니까? 그것은 다음과 같아야합니다 : PiggyBank.jar/com/foo/bar/pig/IsInternal.class

0

이 오류는 UDF의 클래스 경로 경로 오류를 수정하지 않은 것과 같습니다. 동일한 문제가 있습니다. in this 링크 나는 위 오류를 수정하는 방법을 설명합니다. 희망이 당신을 도울 것입니다.