首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自的sqoop导入失败,除非连接字符串中的密码

来自的sqoop导入失败,除非连接字符串中的密码
EN

Stack Overflow用户
提问于 2017-06-10 15:22:32
回答 2查看 623关注 0票数 0

详细信息:

Sqoop 1.4.6

已尝试的密码文件位于HDFS和本地FS中。还尝试将密码文件声明为--password-file file:///user/username/password.file

代码语言:javascript
复制
sqoop import \
--connect 'jdbc:sqlserver://servername;database=databasename' \
--username userxxx \
--password-file password.file \
--table 'sales' \
--fields-terminated-by '|' \
--null-string '\\N' \
--null-non-string '\\N'  \
--hive-import

在运行sqoop导入时,除非我将用户名和密码放在连接字符串中,否则将从sql server获得身份验证失败。如果我尝试使用-P或--密码文件,身份验证将失败。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-11 06:14:30

--password-file

根据文档的说法,

向数据库提供密码的安全方法。您应该用400个权限将密码保存在用户主目录上的一个文件中,并使用-- password -file参数指定该文件的路径,这是输入凭据的首选方法。然后,Sqoop将从文件中读取密码,并使用安全方法将其传递给MapReduce集群,而不会在作业配置中公开密码。包含密码的文件可以位于本地FS或HDFS上。

检查文件的权限,它应该在主目录中。

Sqoop期望HDFS中的--password-file,如果您使用本地FS添加file://

示例:--password-file file:///user/dev/database.password

-P option

它将从控制台读取密码。使用此命令时,必须在执行命令时写入密码。

password

只需添加你的密码。

票数 0
EN

Stack Overflow用户

发布于 2018-02-20 12:37:14

还有一种更好的方法。使用expect脚本

创建一个脚本文件,如"script.sh“:

代码语言:javascript
复制
#!/usr/bin/expect -f
      set password "<ur password desination or file>"
      spawn sqoop <args>  # define sqoop command here
      expect "*?Enter password:*" # As ask for password as while reading from database
      send -- "$password\r"
      expect sleep 15  # or you can use "set timeout -1" for infinite waiting time
      expect eof
EOF
done

如果您遇到错误,生成命令不存在等等,这意味着expect没有安装。

对于centos7

代码语言:javascript
复制
yum install expect -y

并运行文件"script.sh“

如果expect脚本无法加载

试着:

代码语言:javascript
复制
> /usr/bin/expect script.sh

谢谢

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44474949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档