这两天做个项目使用到sqoop,这东西以前用过,现在有点忘了,出了点差错,记录下来
环境
- hadoop 2.4.1
- jdk8
- sqoop 1.4.6
- centos7
- mysql 5.7.x
报错
[root@mym sqoop]# bin/sqoop import --connect jdbc:mysql://192.168.31.201:3306/company_test --username root --password 123456 --table staff --target-dir /sqoop/test/company_test --delete-target-dir --num-mappers 1 --fields-terminated-by "\t"
Warning: /home/mym/apps/sqoop/bin/../../hcatalog does not exist! HCatalog jobs will fail.
Please set $HCAT_HOME to the root of your HCatalog installation.
Warning: /home/mym/apps/sqoop/bin/../../accumulo does not exist! Accumulo imports will fail.
Please set $ACCUMULO_HOME to the root of your Accumulo installation.
20/01/15 20:14:52 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6
20/01/15 20:14:52 WARN tool.BaseSqoopTool: Setting your password on the command-line is insecure. Consider using -P instead.
20/01/15 20:14:52 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset.
20/01/15 20:14:52 INFO tool.CodeGenTool: Beginning code generation
20/01/15 20:14:53 INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM `staff` AS t LIMIT 1
20/01/15 20:14:53 INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM `staff` AS t LIMIT 1
20/01/15 20:14:53 INFO orm.CompilationManager: HADOOP_MAPRED_HOME is /home/mym/apps/hadoop-2.4.1
20/01/15 20:14:53 ERROR orm.CompilationManager: It seems as though you are running sqoop with a JRE.
20/01/15 20:14:53 ERROR orm.CompilationManager: Sqoop requires a JDK that can compile Java code.
20/01/15 20:14:53 ERROR orm.CompilationManager: Please install a JDK and set $JAVA_HOME to use it.
20/01/15 20:14:53 ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: Could not start Java compiler.
at org.apache.sqoop.orm.CompilationManager.compile(CompilationManager.java:187)
at org.apache.sqoop.tool.CodeGenTool.generateORM(CodeGenTool.java:108)
at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:478)
at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:605)
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)
问题原因
jdk版本不一致。hadoop的hadoop-env.sh
的JAVA_HOME和相同环境变量里的不一致
解决
统一下JAVA_HOME就可以了