oracle模式的ob库数据通过sqoop同步到hive中,sqoop脚本使用-m参数报错

【问题描述】oracle模式的ob库数据通过sqoop同步到hive中,sqoop脚本使用-m参数报错(sqoop脚本为附件1,报错信息为附件2)
【复现路径】问题出现前后相关操作
【脚本代码】sqoop import “-Dorg.apache.sqoop.splitter.allow_text_splitter=true”
–connect jdbc:oceanbase://xcdb.edhic.com:2883/nclaimuser?dontTrackOpenResources=true&defaultFetchSize=10000&useCursorFetch=true
–username sjzl@xc_ora_zh01
–password xxxxxx
–query “select id
,datatype
,datacode
,dataname
,pretype
,precode
,inserttimeforhis
,operatetimeforhis
,validstatus
,olddatacode
,olddataname
,enumid
,sysdate as inputdate
from nclaimuser.commondata
where 1 = 1
and $CONDITIONS”
–m 4
–hive-table ods_edw.ods_ncl_commondata
–hive-drop-import-delims
–fields-terminated-by ‘\001’
–delete-target-dir
–null-non-string ‘\N’
–null-string ‘\N’
–fetch-size 10000
–driver com.alipay.oceanbase.jdbc.Driver
–target-dir /user/hive/warehouse/ods_edw.db/ods_ncl_commondata_tmp
–hive-overwrite
–split-by id
–map-column-java ID=String,DATATYPE=String,DATACODE=String,DATANAME=String,PRETYPE=String,PRECODE=String,INSERTTIMEFORHIS=String,OPERATETIMEFORHIS=String,VALIDSTATUS=String,OLDDATACODE=String,OLDDATANAME=String,ENUMID=String
–hive-import


这个 SQL 直接连数据库执行会报错吗??

会的,这是sqoop自动生成的sql。

应该是ob的驱动生成的sql,表别名前面多了 as 关键字造成的报错

ob驱动不会改SQL吧

我同步oracle库数据时,开启-m参数。生成的sql就不会在表别名前加as

SQL不对,自然会报错,那就要从这SQL的来源入手了,到底是sqoop改写生成的SQL?还是驱动后改写生成的SQL?

脚本中的sql是
select id,xxx,xxx from table

开启-m 参数后 sql就变成了
select MIN(id), MAX(id) from (select id,xxx,xxx from table) as t1

同步oracle库时脚本中的sql是
select id,xxx,xxx from table

开启-m 参数后 sql就变成了
select MIN(id), MAX(id) from (select id,xxx,xxx from table) t1

在同步ob库的oracle模式时sql会在表别名前多一个as

ob的驱动版本发一下?

SQL 是什么组件改写的??

oceanbase-client-1.1.10.jar

脚本中的sql
select id,xxx,xxx from table

是写在sqoop脚本里面的,sqoop是通过jdbc连的ob库

正常情况下,开启-m 参数后 sql就变成了
select MIN(id), MAX(id) from (select id,xxx,xxx from table) t1

这个该SQL的动作是哪个组件负责???

这个sql是sqoop生成的。。同步oracle时生成的是不带as的sql,同步ob的oracle时就会加as

能确定 snoop 在什么条件下会自动加 as吗?

sqoop同步来源库为mysql时会生成as

驱动问题可能比较大,oboracle需要使用OB提供的驱动,你可以换高版本一点的OB驱动试试。

请帮忙给一个高版本的oboracle驱动下载连接