sqoop不导入数据类型varchar2

时间:2016-11-09 09:01:59

标签: oracle hadoop hdfs sqoop varchar2

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

2 个答案:

答案 0 :(得分:1)

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

你可以在" $ HADOOP_CLASSPATH "中找到这些jar文件的路径。和" $ SQOOP_HOME "

答案 1 :(得分:0)

可能是sqoop无法识别匹配的java类型VARCHAR2,因此请尝试使用 - -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” - 查询'从MyTable中选择*其中$ CONDITIONS' - map-column-java a = String --split-by“coulmn” - 边界查询“SELECT min(splitColumn),max(SplitCoulmn)FROM DUAL”--num-mappers 30

让我知道这是否有效。