我们正在面对Cloudera CDH 5.8.5中与Sqoop v1.4.6的钱包利用有关的一些问题。我们的方案:带钱包的Sqoop导入
- 用户文件夹:/家/ myuser的
- 钱包夹:/家/ myuser的/钱包(cwallet.sso,cwallet.sso.lck,ewallet.p12,电子钱包。 p12.lck,sqlnet.ora中,tnsnames.ora中)
钱包是公配置为如果用完
sqlplus /@MY_TNS_NAME
我可以连接到没有密码的数据库。
问题是与sqoop。 我可以连接到数据库,并列出内使用的所有表:
export HADOOP_OPTS="-Doracle.net.tns_admin=/home/myuser/wallet -Doracle.net.wallet_location=/home/myuser/wallet"
sqoop list-tables --connect "jdbc:oracle:thin:@MY_TNS_NAME"
如果我试图转储一个表到HDFS使用下面的命令(如建议here)
export HADOOP_OPTS="-Doracle.net.tns_admin=/home/myuser/wallet -Doracle.net.wallet_location=/home/myuser/wallet"
sqoop import -D mapreduce.map.java.opts='-Doracle.net.tns_admin=. -Doracle.net.wallet_location=.' -files /home/myuser/wallet/cwallet.sso,/home/myuser/wallet/ewallet.p12,/home/myuser/wallet/sqlnet.ora,/home/myuser/wallet/tnsnames.ora -libjars "/var/lib/sqoop/oraclepki.jar,/var/lib/sqoop/osdt_cert.jar,/var/lib/sqoop/osdt_core.jar,/var/lib/sqoop/sqljdbc4.jar" --m 1 --connect "jdbc:oracle:thin:@MY_TNS_NAME" --query "SELECT * FROM MYTABLE WHERE \$CONDITIONS" --target-dir '/tmp/mytabledump'
我得到这个错误:
Error: java.lang.RuntimeException: java.lang.RuntimeException: java.sql.SQLException: encountered a problem with the Secret Store. Check the wallet location for the presence of an open wallet (cwallet.sso) and ensure that this wallet contains the correct credentials using the mkstore utility: java.io.IOException: oracle.security.crypto.core.CipherException: Invalid padding string (or incorrect password)...
如果我运行相同的命令而不使用钱包(手动提供用户名和密码)它的工作原理。
将钱包传递给映射器似乎存在一些问题。 任何想法如何解决这个问题?
附加信息:
- 的ACL允许sqoop用户访问/家/ myuser的
- 的/家庭/为myuser /钱包文件夹所有者组是sqoop主要组(RWX权限)。