如何通过oozie向sqoop提供密码以连接到ms sql?

l7mqbcuq  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(595)

我正在使用sqoop将信息从hdfs导出到mssql。我正在通过oozie运行sqoop。现在我已经在oozie工作流中为jdbc连接硬编码了uid,pwd。一旦我切换到prod,我就不能这样做了。在这种情况下,传递身份验证信息的最佳方式是什么?

<sqoop xmlns="uri:oozie:sqoop-action:0.2">
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <arg>export</arg>
            <arg>--connect</arg>
            <arg>jdbc:sqlserver://$sqlServerIP:1433</arg>
            <arg>--table</arg>
            <arg>tableName</arg>
            <arg>--export-dir</arg>
            <arg>/user/sqoop/file</arg>
            <arg>--username</arg>
            <arg>me</arg>
            <arg>--password</arg>
            <arg>password</arg>
</sqoop>

我可以把它们作为参数传入,比如$username,$password。但实际的uid/pwd仍然会显示在oozie web控制台中。
更新
我尝试了两种方法(如下面建议的那样)来做到这一点…在vim中,我创建了pwd,以便只拥有密码(没有空格或其他任何东西)。称之为pwd。
1) 我试过使用文件系统。但是我得到一个异常,说文件不存在。在查看代码之后,sqoop似乎使用传递的conf来访问fs。所以我假设当通过oozie运行时,它只能访问hdfs。
2) 我将密码文件加载到hdfs上的一个随机位置/users/my name/pwd(pwd是文件)。现在它可以访问文件了(因为我没有得到ioexception)。但是它无法连接到sqlserver。我不知道该怎么做才能让它工作?
更新2我创建的密码文件如下: echo "pwd" > my.password 这会将eol添加到我更改为的文件my.password echo -n "pwd" > my.password 现在它起作用了。

e37o9pze

e37o9pze1#

我认为可以利用指定--password文件参数的优势,这样oozie就永远看不到密码了。查看sqoop用户指南了解更多详细信息。

相关问题