sqoop 不导入数据类型 varchar2

sqoop not import datatype varchar2

sqoop 无法将数据类型 varchar2 导入到 hadoop 我在 oracle 数据库中有一个 table,我想将数据导入到 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

可能是 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" --boundary-query "SELECT min(splitColumn),max(SplitCoulmn) FROM DUAL" --num-mappers 30

让我知道这是否有效。

你可以尝试降级 ojdbc 而不是使用更高的 ojdbc "ojdbc6 or ojdbc7" 使用 "ojdbc14" 这解决了我的问题但是为了不面对某些编码的异常 类在从 orale9i 导入数据时未找到删除或重命名 "ori18n.jar"。

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