-1

我想连接到我的数据库(oracle 10g)并将数据导入到HDFS. 我正在使用 IBM big Insight 平台。

但是当我使用以下命令时:

sqoop import --connect jdbc:oracle:thin://<IP>:1521/DB--username xxx --password xxx--table t /lib/sqoop/sqoopout 

运行 Sqoop 时出现异常:

java.lang.RuntimeException:无法加载数据库驱动程序类:oracle.jdbc.OracleDriver

java.lang.RuntimeException:无法加载数据库驱动程序类:oracle.jdbc.OracleDriver

在 org.apache.sqoop.manager.OracleManager.makeConnection(OracleManager.java:286) 在 org.apache.sqoop.manager.GenericJdbcManager.getConnection(GenericJdbcManager.java:52)

在 org.apache.sqoop.manager.SqlManager.execute(SqlManager.java:752) 在 org.apache.sqoop.manager.SqlManager.execute(SqlManager.java:775) 在 org.apache.sqoop.manager.SqlManager.getColumnInfoForRawQuery (SqlManager.java:270) 在 org.apache.sqoop.manager.SqlManager.getColumnTypesForRawQuery(SqlManager.java:241) 在 org.apache.sqoop.manager.SqlManager.getColumnTypes(SqlManager.java:227) 在 org.apache。 sqoop.manager.ConnManager.getColumnTypes(ConnManager.java:295) 在 org.apache.sqoop.orm.ClassWriter.getColumnTypes(ClassWriter.java:1833) 在 org.apache.sqoop.orm.ClassWriter.generate(ClassWriter.java:第1645章 org.apache.sqoop.tool.CodeGenTool.generateORM(CodeGenTool.java:107) .run(ImportTool.java:605) 在 org.apache.sqoop.Sqoop。在 org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:179) 在 org.apache.sqoop 在 org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70) 运行(Sqoop.java:143) .Sqoop.runTool(Sqoop.java:218) 在 org.apache.sqoop.Sqoop.runTool(Sqoop.java:227) 在 org.apache.sqoop.Sqoop.main(Sqoop.java:236)

我还复制了sqoop /lib 中的 ojdbc6_g.jar。请帮我解决我可以将数据导入HDFS的问题。

4

2 回答 2

0

您使用的是什么版本的 BigInsights?您是否在所有节点中加载了 Oracle odbc jar?Sqoop 在内部触发将从数据节点运行的 Map 作业。

于 2016-05-05T06:23:12.350 回答
0

要从 oracle 数据库中进行 sqoop 数据,首先您需要下载 ojdbc jar 并将其放入 sqoop lib 文件夹中。下载 OJDBC jar 的链接是:

https://mvnrepository.com/artifact/ojdbc/ojdbc/14 https://mvnrepository.com/artifact/com.oracle/ojdbc14/10.2.0.2.0

除此之外,用于从 ojdbc 导入数据的 sqoop 命令是:

sqoop import --connect jdbc:oracle:thin:@127.0.0.1:1521:XE --username ***** --password ****** --table table_name --columns "COL1, COL2, COL3, COL4, COL5" --target-dir /xyz/zyx -m 1 

这里可以注意 --connect 工具,使用的连接字符串有以下格式:

jdbc:oracle:thin:@ip_address:port_number:SID

允许的第二种格式是:

jdbc:oracle:thin:@ip_address:port_number/service_name

希望这可以帮助。

PS - 如果您无法将 OJDBC jar 添加到 sqoop 的 lib,您还可以将 Jar 文件的路径附加到 $HADOOP_CLASSPATH 变量。

export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/root/shared_folder/ojdbc6.jar

PPS - 在执行之前将 ojdbc jar chmod 到 777。

于 2017-04-12T06:52:27.280 回答