如何通过OOZIE为SQOOP提供密码以连接到MS-SQL?

hba*_*hba 6 sql-server hadoop jdbc sqoop oozie

我正在使用SQOOP将信息从HDFS导出到MS-SQL.我正在通过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>
Run Code Online (Sandbox Code Playgroud)

我可以像$ userName,$ password这样的参数传递它们.但实际的uid/pwd仍将显示在oozie Web控制台中.

UPDATE

我已经尝试了两种方法(如下所示)...在VIM中我创建了pwd以获得密码(没有空格或其他任何东西).叫这个pwd.

1)我尝试使用文件系统.但是我得到一个IOException,说该文件不存在.查看代码后,看起来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,现在它可以正常工作.

Jar*_*cho 4

我认为您可以利用指定 --password-file 参数,这样 Oozie 就永远不会看到密码。请参阅Sqoop 用户指南了解更多详细信息。