2013-03-08 2 views
2

안녕하세요, 다음 오류를 해결하는 데 도움을주세요. hdfs 파일에서 hbase 테이블에 데이터를 삽입하는 Mapreduce 작업 fopr을 실행할 때이 작업을 수행하고 있습니다. HFileOutputFormat.class을 사용하여 이전에 나는 MultiTableOutputFormat.class을 사용하여 동일하게 동작 시켰지만 정상적으로 작동했지만 hbase 테이블에 데이터를 삽입하는 데는 많은 시간이 걸렸습니다.스레드 "main"의 예외 org.apache.hadoop.mapred.InvalidJobConfException : 출력 디렉토리가 설정되지 않았습니다

그래서 u는 ... :) *

job.setMapOutputKeyClass (ImmutableBytesWritable.class을) 저를 도와 주실 수 있습니다; job.setMapOutputValueClass (Put.class); job.setInputFormatClass (TextInputFormat.class);
job.setOutputFormatClass (HFileOutputFormat.class); job.setMapperClass (Map.class); HTable hTable = 새 HTable (conf, "ARK_3000"); HFileOutputFormat.configureIncrementalLoad (job, hTable);

오류 security.UserGroupInformation : 같은 PriviledgedActionException : reddym (인증 : SIMPLE) 원인 : org.apache.hadoop.mapred.InvalidJobConfException : 출력 디렉토리 설정되지 않았습니다. 스레드 "main"의 예외 org.apache.hadoop.mapred.InvalidJobConfException : 출력 디렉토리가 이 아님.

감사 Madhusudhana 레디

답변

3

확실히 출력 디렉토리가 쓰기 금지되어 있는지 확인하고 드라이브의 루트와 같은 디렉토리를 사용하지 마십시오 다시 시도하십시오. 이 감사

도움이되기를 바랍니다

편집 :이 출력 디렉토리를 물어 봅니다 곳을 추가하려고

HFileOutputFormat.setOutputPath(conf, new Path(<YOUR_LOCATION>)); 

또는

FileOutputFormat.setOutputPath(conf, new Path(<YOUR_LOCATION>)); 그리고 당신은을 쓸 곳이 알 수 있도록 출력 디렉토리를 언급 할 필요가 데이터를.

도움이 필요하시면 문제 해결에 도움이 되길 바랍니다. 나는 언제나 도와 드리겠습니다.

EDIT 2 : 쓰고있는 테이블이 메모리에 저장되고 프로그램을 끝내면 메모리의 모든 데이터가 손실되므로 출력 디렉토리를 언급해야합니다. 예를 들어 프로그램이 충돌하면 디스크에 기록되지 않는 한 모든 데이터가 손실됩니다. 따라서 출력 디렉토리에 저장된 데이터는 문제가 발생한 경우의 백업입니다. 당신은 더 이상 지원이 다른 의견 감사 톰 빠른 응답

+0

감사합니다 :)은 HBase를 매우 새로운 오전을 떠날 필요하면

나는이 당신을 위해 명확하게 질문에 대한 답변이 되었기를 바랍니다. 그래서이 오류를 제거하기 위해 코드에 추가 할 내용을 더 자세히 설명해주십시오. 사실 내가 코드에 다음 줄을 추가하지 않았습니다. hbase 테이블에 직접 작성하는 것처럼이 행을 cubeOutputPath에 쓰도록 추가해야하는 이유는 출력 디렉토리를 왜 필요로하는지입니다. HFileOutputFormat.setOutputPath (job, cubeOutputPath); – MapReddy

+1

예 선생님 지금 막 MR 코드가 오류없이 실행 중이지만 여전히지도를 완성하지 못했다고 말하는 것처럼 경로를 추가하는 몇 가지 기사에서 보았습니다.그리고 내 질문에 왜 우리가 hbase 테이블에 데이터를 쓸 쓸 출력 디렉토리 언급해야합니까 ??? – MapReddy

+0

굉장 :) 대답을 ... 고맙습니다. :) 그리고 나는 5000 개의 행이있는 500 개의 파일에 대해 위의 코드를 실행했으며 각 행에는 각 파일에 32 개의 열이 있습니다. 각 파일의 크기는 5.5MB입니다. 이전에 MultiTableOutputFormat.class 코드는 거의 24 시간을 마치기 위해 끝내기 시작했습니다. (:(. 그리고 그것은 지금까지 Maptasks를 완료하지 않았습니다. hbase 테이블에 삽입하기 위해 총 약 3GB의 데이터를 마무리해야합니다. – MapReddy

관련 문제