sqoop import——密码文件函数在sqoop1.4.4中工作不正常

0pizxfdo  于 2021-05-30  发布在  Hadoop
关注(0)|答案(7)|浏览(333)

我使用的是hadoop-1.2.1,sqoop版本是1.4.4。
我正在尝试运行以下查询。

sqoop import --connect jdbc:mysql://IP:3306/database_name --table clients --target-dir /data/clients --username root --password-file /sqoop.password -m 1
``` `sqoop.password` 是保存在路径中hdfs上的文件 `/sqoop.password` 经许可。
它给了我一个错误

Access denied for user 'root'@'IP' (using password: YES)

有人能提供解决方案吗?提前谢谢。
wi3ka0sx

wi3ka0sx1#

当您打开文件并写入密码时,“\n”正在写入文件。最好使用下面的方法来避免问题 echo -n "Your_sqoop_password" > sqoop.password

yyhrrdl8

yyhrrdl82#

根据sqoop文档
您应该将密码保存在用户主目录中具有400权限的文件中,并使用 --password-file argument ,是输入凭据的首选方法。然后,sqoop将从文件中读取密码,并使用安全方法将其传递给mapreduce集群,而不会在作业配置中公开密码。包含密码的文件可以在本地fs或hdfs上。
如果我用root用户运行sqoop作业,那么我的密码文件将在 /user/root/ 在hdfs中

sqoop import --connect jdbc:mysql://database.example.com/employees \
    --username venkatesh --password-file /user/root/database.password

有关更多详细信息,请查看

mctunoxg

mctunoxg3#

创建密码时,请使用 echo -n 选项( -n 选项删除所有尾随空格)。
假设您有一个密码“mypassword”,并希望将其保存到一个文件中 sqoop.password ,然后执行以下步骤:
使用命令创建密码

echo -n "myPassword" > sqoop.password

将文件上载到hdfs,因为该文件需要存在于hdfs中

hadoop fs -put sqoop.password /user/keepMyFilesHere

编写导入命令

sqoop list-tables --connect jdbc:mysql://localhost/kpdatabase --username root --password-file /user/karanpreet.singh/sqoop.password

这肯定管用!

voase2hg

voase2hg4#

请按照下面的链接为您的所有sqoop密码相关的疑问。
www.ericlin.me

xriantvc

xriantvc5#

不确定您是否仍有此问题。密码文件可以在任何文件夹中。尝试以下语法,它应该可以工作:

--password-file file:///user/root/database.password
50pmv0ei

50pmv0ei6#

检查密码文件中是否有垃圾字符。我也遇到了同样的问题,最后发现文件的末尾包含了一个\n字符,sqoop认为这也是密码字符串的一部分。尝试创建下面提到的密码文件,然后使用密码文件:echo-n“root\u password”>password.txt将您的密码替换为root\u密码。

piok6c0g

piok6c0g7#

验证运行 sqoop 命令是文件的所有者 /sqoop.password (设置了400个权限)。这将确保密码文件可读。
确保 sqoop.password 文件末尾没有任何额外的非打印字符(例如,换行符)。检查这一点的一个简单方法是查看文件的大小。如果密码是'sqoop',文件的大小应该是5。如果较大,则删除 sqoop.password 文件,在本地重新生成并将其放回hdfs。
报告上述信息的命令是: hadoop fs -ls /sqoop.password

相关问题