필드 순서도 맞췄고, 그런데 계속 실패났다.
sqoop export \
--connect jdbc:oracle:thin:@아이피:포트:디비스페이스 \
--username 아이디 \
--password 패스워드 \
--table tb_save_table \
--export-dir /user/hive/warehouse/sample.db/t_test_data \
--input-fields-terminated-by "\t" \
--input-lines-terminated-by "\n" \
--verbose \
-m 1 \
--input-null-string '\\N' \
--input-null-non-string '\\N'
대충 이런 에러 났다. 하도 짜증나서 오라클에서 내부적으로 upper 로 필드명 관리되는데 이게 안맞나 해서 필드명도 손댔지만
삽질의 끝으로 하다보면 결국은 필드명이 문제가 이나라 테이블명의 대소문자가 문제였다 -_-;
16/02/22 22:17:34 DEBUG manager.OracleManager$ConnCache: Caching released connection for jdbc:oracle:thin:@아이피:포트:디비스페이스/아이디
16/02/22 22:17:34 ERROR sqoop.Sqoop: Got exception running Sqoop: java.lang.IllegalArgumentException: There is no column found in the target table t_ncc_ad_tdly_st_tmp. Please ensure that your table name is correct.
java.lang.IllegalArgumentException: There is no column found in the target table tb_save_table . Please ensure that your table name is correct.
at org.apache.sqoop.orm.ClassWriter.generate(ClassWriter.java:1658)
at org.apache.sqoop.tool.CodeGenTool.generateORM(CodeGenTool.java:96)
at org.apache.sqoop.tool.ExportTool.exportTable(ExportTool.java:64)
at org.apache.sqoop.tool.ExportTool.run(ExportTool.java:100)
at org.apache.sqoop.Sqoop.run(Sqoop.java:143)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:179)
at org.apache.sqoop.Sqoop.runTool(Sqoop.java:218)
at org.apache.sqoop.Sqoop.runTool(Sqoop.java:227)
at org.apache.sqoop.Sqoop.main(Sqoop.java:236)
이렇게 하니 해결된다.
헐
sqoop export \
--connect jdbc:oracle:thin:@아이피:포트:디비스페이스 \
--username 아이디 \
--password 패스워드 \
--table TB_SAVE_TABLE \
--export-dir /user/hive/warehouse/sample.db/t_test_data \
--input-fields-terminated-by "\t" \
--input-lines-terminated-by "\n" \
--verbose \
-m 1 \
--input-null-string '\\N' \
--input-null-non-string '\\N'