使用 sqoop 将数据从 oracle 导入到 hdfs

Posted

技术标签:

【中文标题】使用 sqoop 将数据从 oracle 导入到 hdfs【英文标题】:data import from oracle to hdfs with sqoop 【发布时间】:2016-06-27 14:03:42 【问题描述】:

您好,我在尝试使用 sqoop 将数据从 Oracle 导入 HDFS 时遇到以下错误。 使用的命令-

sqoop import --connect jdbc:oracle:thin:sys/Welcome123@192.168.41.1:1521:orcl --username tgthr -P --table transactions --columns "tid,accounid,amount" --m 1

错误日志-

    cloudera@cloudera-vm:~$ sqoop import --connect jdbc:oracle:thin:sys/Welcome123@192.168.41.1:1521:orcl --username tgthr -P --table transactions --columns "tid,accounid,amount" --m 1
Enter password: 
16/06/27 05:34:51 INFO tool.CodeGenTool: Beginning code generation
16/06/27 05:34:53 ERROR manager.SqlManager: Error executing statement: java.sql.SQLRecoverableException: Io exception: The Network Adapter could not establish the connection
16/06/27 05:34:53 ERROR sqoop.Sqoop: Got exception running Sqoop: java.lang.NullPointerException
java.lang.NullPointerException
    at com.cloudera.sqoop.orm.ClassWriter.generate(ClassWriter.java:935)
    at com.cloudera.sqoop.tool.CodeGenTool.generateORM(CodeGenTool.java:82)
    at com.cloudera.sqoop.tool.ImportTool.importTable(ImportTool.java:337)
    at com.cloudera.sqoop.tool.ImportTool.run(ImportTool.java:423)
    at com.cloudera.sqoop.Sqoop.run(Sqoop.java:144)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:79)
    at com.cloudera.sqoop.Sqoop.runSqoop(Sqoop.java:180)
    at com.cloudera.sqoop.Sqoop.runTool(Sqoop.java:218)
    at com.cloudera.sqoop.Sqoop.main(Sqoop.java:228)
cloudera@cloudera-vm:~$ 

【问题讨论】:

【参考方案1】:

嘿,它对我有用。

sqoop import --connect jdbc:oracle:thin:@[ORACLE_SERVER_IP]:1521:orcl --username [ORACLE_USERNAME] --password [ORACLE_PASSWORD] --table [TABLE_NAME] -target-dir [/tmp/myoutput]

注意-->避免使用括号。它对于 oracle 所以对于其他数据库的连接字符串会改变。

另外,“orcl”是我的实例名称,1521是oracle中的端口,请检查后再导入。

例子-->

sqoop import --connect jdbc:oracle:thin:@IP:1521:orcl --username user1 --password Password1 --table MYTAB -target-dir /tmp/myoutput/

表名应为大写。

【讨论】:

以上是关于使用 sqoop 将数据从 oracle 导入到 hdfs的主要内容,如果未能解决你的问题,请参考以下文章

利用SQOOP将数据从数据库导入到HDFS(并行导入,增量导入)

将 BLOB(图像)从 oracle 导入到 hive

使用 sqoop 从 Oracle 到 hive 的日期导入问题

使用 NodeJs 将数据从 CSV 导入 Oracle 中的表

如何在 Oracle 12c 中使用 impdp 将带有配置文件的 dmp 文件从 CDB 数据库导入到 PDB 数据库实例?

sqoop从oracle导数据后是空表