돼지를 사용하는 그루트 (Grunt)에서 자바 기능을 호출하려고 시도하고 있습니다. 나는 Hadoop에 대해 상당히 새롭기 때문에 몇 년 안에 Linux 나 Java를 사용하지 않았다 (나는 .Net 소녀). 제공된 PiggyBank.jar의 기능을 사용했습니다. 이클립스에서 간단한 테스트 클래스를 작성하고 jar 파일을 그 루트 (Grunt)의 루트 폴더에 내 보냈다. 다음 명령을 실행하여 아래 오류를 얻습니다.Apache Pig에서 UDF 실행
grunt> Register KellyProject1.jar
grunt> grades = load 'grades.txt' as (studentName:charArray, <etc>);
grunt> grades2 = foreach grades generate studentName, hadoop.Upper(studentName);
오류 org.apache.pig.tools.grunt.Grunt - ERROR 1070 : hadoop.Upper 사용하여 수입을 확인할 수 없습니다 : [java.lang의, org.apache.pig.builtin, 조직을... . apache.pig.impl.builtin]
Upper.java : 처음에는
package hadoop;
import java.io.IOException;
import org.apache.pig.EvalFunc;
import org.apache.pig.data.Tuple;
public class Upper extends EvalFunc<String>
{
public String exec(Tuple input) throws IOException {
if (input == null || input.size() == 0)
return null;
try{
//String str = (String)input.get(0);
String str = "something";
return str.toUpperCase();
}catch(Exception e){
throw new IOException("Caught exception processing input row ", e);
}
}
}
나는 정규 수업 시간에 "안녕하세요!"간단한 정적 인 방법을 쓴 후 나는 확장이 온라인으로 모든 예제를 보았다 EvalFunc 그래서 자바 코드를 복사했습니다. 또한 어쩌면 내가 제대로 jar 파일을 생성/내보내기하는 방법을 이해할 수없는 경우 궁금해? Eclipse가 자동으로 빌드되도록 설정되었으므로 프로젝트 이름을 마우스 오른쪽 버튼으로 클릭하고 내보내기로 이동하여 jar 파일을 내 Cloudera 폴더에 넣습니다. Visual Studio와 dll에서 내 머리를 돌리는 것은 어렵습니다.
글쎄,이 코드는 완벽하게 괜찮아요. 나는 커맨드 라인을 재시작하고 툴툴 거리는 소리를 내며 작동했다. 내 컴퓨터를 창밖으로 던지고 싶습니다. – Kelly