sqoop - 连接到oracle并将数据导入IBM BigInsights中的HDFS

时间:2016-04-19 10:47:26

标签: oracle hadoop jdbc sqoop biginsights

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

但是当我使用下面的命令时:

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

运行Sqoop时遇到异常:

  

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

     

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

     

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

     

at org.apache.sqoop.manager.SqlManager.execute(SqlManager.java:752)at at   org.apache.sqoop.manager.SqlManager.execute(SqlManager.java:775)at   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)at   org.apache.sqoop.tool.CodeGenTool.generateORM(CodeGenTool.java:107)at at   org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:478)at at   org.apache.sqoop.tool.ImportTool.run(ImportTool.java:605)at 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 at   org.apache.sqoop.Sqoop.runTool(Sqoop.java:218)at at   org.apache.sqoop.Sqoop.runTool(Sqoop.java:227)at at   org.apache.sqoop.Sqoop.main(Sqoop.java:236)

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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

希望这有帮助。

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

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

P.P.S - 在执行之前将ojdbc jar调到777。