SQOOP导入相关查询

时间:2017-02-01 15:03:44

标签: mysql shell hadoop sqoop

我一直在通过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工作,因此脚本中不应该执行任何问题。我不想玩许可,因为它是一个非常有限的环境,我想把它作为最后的选择。

任何帮助表示感谢。

1 个答案:

答案 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)

如果它反映了错误后的任何错误,我可以帮助您更好。