【问题标题】:sqoop import all to hive from db2 specific schemasqoop 从 db2 特定模式导入全部到 hive
【发布时间】:2017-05-02 09:26:01
【问题描述】:

我试图使用下面的命令行从 DB2 中的特定模式导入所有表。

sqoop import-all-tables  --username user --password pass \
--connect jdbc:db2://myip:50000/databs:CurrentSchema=testdb \
--driver com.ibm.db2.jcc.DB2Driver  --fields-terminated-by ',' \
--lines-terminated-by '\n' --hive-database default --hive-import --hive-overwrite \
--create-hive-table -m 1;

遇到以下错误

    2017-05-02 09:21:18,474 ERROR - [main:] ~ Error reading database metadata: 
    com.ibm.db2.jcc.am.SqlSyntaxErrorException: [jcc][10165][10051][4.11.77] 
    Invalid database URL syntax: 
    jdbc:db2://myip:50000/msrc:CurrentSchema=testdb. ERRORCODE=-4461, 
    SQLSTATE=42815 (SqlManager:43)
    com.ibm.db2.jcc.am.SqlSyntaxErrorException: [jcc][10165][10051][4.11.77] 
    Invalid database URL syntax: 
    jdbc:db2://myip:50000/msrc:CurrentSchema=testdb. ERRORCODE=-4461, 
    SQLSTATE=42815
        at com.ibm.db2.jcc.am.gd.a(gd.java:676)
        at com.ibm.db2.jcc.am.gd.a(gd.java:60)
        at com.ibm.db2.jcc.am.gd.a(gd.java:85)
        at com.ibm.db2.jcc.DB2Driver.tokenizeURLProperties(DB2Driver.java:911)
        at com.ibm.db2.jcc.DB2Driver.connect(DB2Driver.java:408)
        at java.sql.DriverManager.getConnection(DriverManager.java:571)
        at java.sql.DriverManager.getConnection(DriverManager.java:215)
        at 
   org.apache.sqoop.manager.SqlManager.makeConnection(SqlManager.java:885)
        at 
  org.apache.sqoop.manager.GenericJdbcManager.getConnection(GenericJdbcManager.java:52)
        at org.apache.sqoop.manager.SqlManager.listTables(SqlManager.java:520)
        at 
    org.apache.sqoop.tool.ImportAllTablesTool.run(ImportAllTablesTool.java:95)
        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)
    Caused by: java.util.NoSuchElementException
        at java.util.StringTokenizer.nextToken(StringTokenizer.java:349)
        at java.util.StringTokenizer.nextToken(StringTokenizer.java:377)
        at com.ibm.db2.jcc.DB2Driver.tokenizeURLProperties(DB2Driver.java:899)
        ... 13 more
    Could not retrieve tables list from server
   2017-05-02 09:21:18,696 ERROR - [main:] ~ manager.listTables() returned null 
    (ImportAllTablesTool:98)
   [

【问题讨论】:

    标签: database hadoop jdbc db2 sqoop


    【解决方案1】:

    命令:

     sqoop import-all-tables \
     --driver com.ibm.db2.jcc.DB2Driver \
     --connect jdbc:db2://myip:50000/databs \
     --username username --password password \
     --hive-database default --hive-import --m 1 \
     --create-hive-table --hive-overwrite
    

    import-all-tables 工具将一组表从 RDBMS 导入到 HDFS。每个表中的数据都存储在 HDFS 的单独目录中。

    要使import-all-tables 工具有用,必须满足以下条件:

    • 每个表都必须有一个单列主键。
    • 您必须打算导入每个表的所有列。
    • 您不得使用非默认拆分列,也不得通过WHERE 子句施加任何条件。

    【讨论】:

      猜你喜欢
      • 2016-05-10
      • 1970-01-01
      • 2016-08-07
      • 2017-02-03
      • 1970-01-01
      • 1970-01-01
      • 2018-09-17
      • 2017-07-01
      • 2021-02-27
      相关资源
      最近更新 更多