【问题标题】:sqoop not import datatype varchar2sqoop 不导入数据类型 varchar2
【发布时间】:2016-11-09 09:01:58
【问题描述】:

sqoop 不导入数据类型 varchar2 到 hadoop 我在 oracle 数据库中有一个表,我想将数据导入 hdfs。 我试图用 sqoop 来做,但没有导入 varchar2 列。 我的意思是这些数据没有到达 hdfs 文件。 我的 sqoop 命令

sqoop import -D mapred.job.name='default oraoop'  --driver oracle.jdbc.driver.OracleDriver --connect "jdbc:oracle:thin:MyIp:MyServiceName" --username "XXXX" --password "XX" --target-dir "My_dir" --query 'select * from MyTable where $CONDITIONS' --split-by "coulmn"  --boundary-query "SELECT min(splitColumn),max(SplitCoulmn)  FROM DUAL" --num-mappers 30

【问题讨论】:

    标签: oracle hadoop hdfs sqoop varchar2


    【解决方案1】:

    您可以尝试降级 ojdbc 而不是使用更高的 ojdbc “ojdbc6 或 ojdbc7” 使用 “ojdbc14” 这为我解决了问题,但为了避免遇到一些编码类未找到的异常,请删除或重命名“ ori18n.jar”同时从 orale9i 导入数据。

    您可以在“$HADOOP_CLASSPATH”和“$SQOOP_HOME”中找到这些 jar 文件的路径

    【讨论】:

      【解决方案2】:

      可能是sqoop无法识别VARCHAR2匹配的java类型,所以试试--map-column-java

      假设 A 列是 VARCHAR2 类型,那么您的 sqoop 命令将是,

      sqoop import -D mapred.job.name='default oraoop' --driver oracle.jdbc.driver.OracleDriver --connect "jdbc:oracle:thin:MyIp:MyServiceName" --username "XXXX" --password "XX" --target-dir "My_dir" --query 'select * from MyTable where $CONDITIONS' --map-column-java a=String --split-by "coulmn" --边界查询“SELECT min(splitColumn),max(SplitCoulmn) FROM DUAL”--num-mappers 30

      让我知道这是否可行。

      【讨论】:

      • 我试过了,我得到了这个错误 16/11/09 04:20:12 ERROR tool.ImportTool: Imported Failed: No ResultSet method for Java type string
      • 'S' 应该是String.. 我已经编辑了命令你现在可以试试吗?
      • 我试过了,但仍然没有导入 varchar2 列
      • 所以你得到的是 Null 值?
      • 您是否也可以尝试转储到 hive 并指定 --map-column-hive 并告诉我。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-22
      • 1970-01-01
      • 1970-01-01
      • 2018-05-20
      相关资源
      最近更新 更多