2012-12-12 2 views
1

(Amazon Elastic MapReduce JobFlow에서) 하이브를 사용하여 테이블을 생성했습니다. 데이터가 hdfs:///mnt/hive_081/warehouse/[table name]에 있음을 알 수 있습니다.Sqoop을 사용하여 하이브 테이블 내보내기 일부 행은 구분되지 않습니다.

나는 (아무것도 변경하지 않고) jq에 Sqoop을 싸서 테스트를 위해 마스터 노드에 업로드했다.

나는 같은 내 Sqoop을 항아리를 실행

/usr/lib/jvm/java-6-sun/bin/java -cp /home/hadoop/conf:/usr/lib/jvm/java-6-sun/lib/tools.jar:/home/hadoop:/home/hadoop/hadoop-tools-1.0.3.jar:/home/hadoop/hadoop-tools.jar:/home/hadoop/hadoop-core-1.0.3.jar:/home/hadoop/hadoop-core.jar:/home/hadoop/lib/*:/home/hadoop/lib/jetty-ext/* -Xmx1000m -Dhadoop.log.dir=/mnt/var/log/hadoop/steps/6 -Dhadoop.log.file=syslog -Dhadoop.home.dir=/home/hadoop -Dhadoop.id.str=hadoop -Dhadoop.root.logger=INFO,DRFA -Djava.io.tmpdir=/mnt/var/lib/hadoop/steps/6/tmp -Djava.library.path=/home/hadoop/native/Linux-i386-32 org.apache.hadoop.util.RunJar /home/hadoop/fsa/anet-dw-sqoop-0.0.1-SNAPSHOT.jar $ARGS 
$ ARGS이 (민감한 MySQL의 플래그가 생략)되어

:

--export-dir hdfs:///mnt/hive_081/warehouse/[table name] --input-null-non-string '\\\N' --direct --input-null-string '\\\N' --username root --input-fields-terminated-by '\0x009' --driver com.mysql.jdbc.Driver --table [table name] 

나는 데이터의 열 행에서이 테스트를하고 그 I 조롱했다. null 값이 없습니다. 각 행은 모든 열에서 동일한 수를 반복 할 때 고유합니다. 내가 명령을 실행하면, 내가 지속적으로 같은 FOUR (10) 행에 대해이 메시지가

java.lang.NumberFormatException: For input string: "231 231  231  231  231  231  231  231  231  231  231  231  231  231  231  231  231  231  231  231  231  231  -25  231  -25  -25  231  231  -25" 

많은 사람들이, 때마다 (음수 값을 무시 얻을, 그이 맞지 않을 수 TINYINT의 열은 번호).

행의 처음 두 값 사이에 공간이 훨씬 적음을 알 수 있습니다. 이게 내 문제 야? 이게 뭐야? 참고로, HDFS에서 로컬 FS로 데이터 파일을 복사 한 후이 파일을 가리키면이 메시지가 나타나지 않지만 데이터가 대상에 도착하지 않았습니다 : /. 어쨌든, 나는 다단계 프로세스를 자동화하려고 노력 중이므로 아무 것도 복사하지 않고 HDFS 데이터에서 직접 작업 할 수 있기를 원합니다.

많은 조언을드립니다.

업데이트 : 구분 기호로 쉼표를 사용하는 경우에도 마찬가지입니다. 동일한 네 행에 대해 관찰됩니다. Hive 테이블을 하나의 행 (이전 테스트의 잘못된 행 중 하나가 아닌)으로 만 제한하면 동일한 오류가 발생합니다.

답변

2

sqoop-export에 대한 인수에서 --input-fields-terminated-by 값은 따옴표가 없어야합니다. 이 작업 방식 :

- 입력 필드 종료 - t \

관련 문제