【问题标题】:SQOOP import related querySQOOP导入相关查询
【发布时间】:2017-02-01 15:03:44
【问题描述】:

我在通过 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 ,然后将数据库名称移动到与端口号相邻的位置,我使用了--driver。但没有任何工作。

我在 SO 上查看过类似的讨论,但没有一个对我有用。 $SQOOP_HOME/lib 具有所需的库。所有权和组所有权对应于root:root。 “用户”虽然只有read 权限,但我注意到在同一路径中,还有许多其他库,而“用户”拥有rw 权限。我仍然相信,由于该命令是通过 CLI 运行的,因此从脚本执行应该没有问题。我不想在许可的情况下玩,因为它是一个非常受限的环境,我想保留它作为最后的选择。

任何帮助表示赞赏。

【问题讨论】:

  • 尝试双引号你的 JDBC URL

标签: mysql shell hadoop sqoop


【解决方案1】:

当您多次覆盖同一个表时,会发生这种情况。

使用下面的 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)

如果它反映任何错误发布错误,我可以更好地帮助你。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-25
    • 1970-01-01
    • 1970-01-01
    • 2018-01-08
    • 1970-01-01
    • 2012-05-03
    • 1970-01-01
    • 2016-08-07
    相关资源
    最近更新 更多