我一直在通过SQOOP从RDBMS导入表时遇到问题,我正在使用以下语法执行命令:
sqoop import --connect jdbc:sqlserver://<hostname>:<port>;username=xxx;password=xxx;database=xxx --table xxx --hive-import --create-hive-table --hive-table xxxx
当我通过命令行执行它时,它工作正常,但是当我尝试通过shell脚本执行时,它会抛出以下错误:
“error tool.basesqooptool在创建数据库管理器时遇到错误”
我尝试了各种排列组合,仍然无法正常工作
我使用--username
--password
,然后将db name right adjecent移动到端口号,我使用了--driver
。但没有任何工作。
我在SO上检查了类似的讨论,但没有一个对我有用。 $SQOOP_HOME/lib
拥有必需的图书馆。所有权和组所有权对应root:root
。 “用户”仅具有read
权限,我注意到在同一路径中,还有许多其他库,“用户”具有rw
权限。我仍然认为,由于命令通过CLI工作,因此脚本中不应该执行任何问题。我不想玩许可,因为它是一个非常有限的环境,我想把它作为最后的选择。
任何帮助表示感谢。
答案 0 :(得分:0)
当您多次覆盖同一张桌子时,会发生这种情况。
使用以下Sqoop命令并查看
sqoop import -libjars /var/lib/sqoop/ojdbc6.jar - connect 'jdbc:oracle:thin:@ hostname / service_name' - -username 用户 -password 密码 -m 1 --hive-overwrite --hive-import - hive-database database_name - hive-table table_nmae - target-dir '/ user / hive / warehouse / databasename.db / tablename' - query “ select * from source_database.source_tablename WHERE 1 = 1 AND \ $ CONDITIONS “
如果它仍然给你相同的错误,请将target-dir更改为其他一些hdfs位置(例如:/ temp / test / table_name)
如果它反映了错误后的任何错误,我可以帮助您更好。