[HADOOP] 하이브 테이블 Sqoop을 수출에 문제는 타임 스탬프에 의해 분할
HADOOP하이브 테이블 Sqoop을 수출에 문제는 타임 스탬프에 의해 분할
나는 타임 스탬프에 의해 분할 된 것 하이브 테이블을 내보낼 수 Sqoop을 드릴 수 없습니다.
나는 타임 스탬프에 의해 분할 된 것 하이브 테이블을 가지고있다. 이 생성하는 HDFS 경로는 내가 Sqoop을 가진 일으키는 문제라고 생각합니다 공백이 포함되어 있습니다.
FS -ls / MY_TABLE / 일 2013년 1월 28일 16시 31분 / 사용자 / 하이브 / 창고 = 2013년 1월 28일 00퍼센트 3A00 % 3A00
Sqoop을 수출에서의 오류 :
13/01/28 17시 18분 23초 오류 security.UserGroupInformation : PriviledgedActionException로 : 브랜든 (인증 : SIMPLE) 원인 : java.io.FileNotFoundException : 파일이 존재하지 않습니다 : / 사용자 / 하이브 / 창고 / MY_TABLE / 일 = 2012- 10-29 00퍼센트 3A00 % 3A00 org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocationsUpdateTimes에서 (FSNamesystem.java:1239) org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocationsInt에서 (FSNamesystem.java:1192) org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocations에서 (FSNamesystem.java:1165) org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocations에서 (FSNamesystem.java:1147) org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.getBlockLocations에서 (NameNodeRpcServer.java:383) org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.getBlockLocations에서 (ClientNamenodeProtocolServerSideTranslatorPB.java:170) 에서 org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos $ ClientNamenodeProtocol $ 2.callBlockingMethod (ClientNamenodeProtocolProtos.java:44064) org.apache.hadoop.ipc.ProtobufRpcEngine $ 서버 $ ProtoBufRpcInvoker.call에서 (ProtobufRpcEngine.java:453) org.apache.hadoop.ipc.RPC $ Server.call (RPC.java:898)에서 org.apache.hadoop.ipc.Server $ 처리기 $의 1.run에서 (Server.java:1693) org.apache.hadoop.ipc.Server $ 처리기 $의 1.run에서 (Server.java:1689) java.security.AccessController.doPrivileged에서 (기본 방법) javax.security.auth.Subject.doAs에서 (Subject.java:396) org.apache.hadoop.security.UserGroupInformation.doAs에서 (UserGroupInformation.java:1332) org.apache.hadoop.ipc.Server $ Handler.run에서 (Server.java:1687)
당신이 할 경우 FS -ls / 사용자 / 하이브 / 창고 / MY_TABLE / 일 = 2013년 1월 28일 00% 3A00 % 3A00 LS : / 사용자 / 하이브 / 창고 / MY_TABLE / 일 = 2013년 1월 28일 ': 해당 파일이나 디렉토리 LS : 00 % 3A00 % 3A00 ': 해당 파일이나 디렉토리
당신이 따옴표를 추가하면 그것은 작동 : 브랜든 자극 - 네임 노드 새로운 @ : ~ $의 때 fs -ls / 사용자 / 하이브 / 창고 / MY_TABLE / 일 = "2013년 1월 28일 00퍼센트 3A00 % 3A00" 발견 114 개 항목 -rw-R - r-- 사용이 브랜든의 슈퍼 그룹 4845 2013년 1월 28일 / MY_TABLE / 일 16시 반 / 사용자 / 하이브 / 창고 = 2013년 1월 28일 % 2천% 253A00 % 253A00 / 000000_0 ...
해결법
-
==============================
1.그래서 당신은 무엇을 할 수 있습니다 :
그래서 당신은 무엇을 할 수 있습니다 :
하이브에서 모든 데이터를 선택하고 HDFS의 디렉토리에 기록
(INSERT OVERWRITE DIRECTORY 사용 '..path를 ..'FROM a.column_n 테이블을 선택 a.column_1)
와 Sqoop을 명령에 --export-DIR ..dir를 사용하여 디렉토리 위치를 지정합니다 ..
이 도움이되기를 바랍니다.
-
==============================
2.당신은 "/ 사용자 / 하이브 / 창고 / MY_TABLE / 일 = 2013년 1월 28일 *"로 시도 할 수 있습니다.
당신은 "/ 사용자 / 하이브 / 창고 / MY_TABLE / 일 = 2013년 1월 28일 *"로 시도 할 수 있습니다.
-
==============================
3.콜론 파일 이름 (:)이 Sqoop을 그것 (콜론로 변환되어 다시 경로를 읽으려고 할 때 나누었다는 Hex.But로 변환하여 작동이 JIRA에서 언급으로 HDFS 경로로 지원되지 않습니다 :) 따라서는 수 질수 그 path.I을 찾을 디렉토리 이름에서 시간 부분을 제거하고 again.Hope이 귀하의 질문에 대답하려고하는 것이 좋습니다.
콜론 파일 이름 (:)이 Sqoop을 그것 (콜론로 변환되어 다시 경로를 읽으려고 할 때 나누었다는 Hex.But로 변환하여 작동이 JIRA에서 언급으로 HDFS 경로로 지원되지 않습니다 :) 따라서는 수 질수 그 path.I을 찾을 디렉토리 이름에서 시간 부분을 제거하고 again.Hope이 귀하의 질문에 대답하려고하는 것이 좋습니다.
from https://stackoverflow.com/questions/14567746/issue-with-sqoop-export-with-hive-table-partitioned-by-timestamp by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 하둡은 파이썬 스트리밍 : 행 번호를 추적 유지 (0) | 2019.10.01 |
---|---|
[HADOOP] 자바 클라이언트에서 실행 LoadIncrementalHFiles (0) | 2019.10.01 |
[HADOOP] HIVE LLAP는 복잡한 유형 작동하지 않습니다 (0) | 2019.10.01 |
[HADOOP] 파일 당 카운트와 단어 수 예 (0) | 2019.10.01 |
[HADOOP] 하이브 쿼리를 실행할 때 권한이 거부 (0) | 2019.10.01 |