我使用SQOOP將信息從HDFS導出到MS-SQL。我通過OOZIE運行SQOOP。現在我已經對OIDZIE工作流中的jdbc連接的uid進行了硬編碼。一旦我轉向刺激,我將無法做到這一點。在這種情況下傳遞身份驗證信息的最佳方式是什麼?我如何通過OOZIE提供密碼給SQOOP以連接到MS-SQL?
<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控制檯中。
UPDATE
我已經試過兩種方式(如波紋管建議)做到這一點...在VIM我創建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
,現在它的工作原理。
只是想說明(至少在CentOS 7上)''echo -n「pw_d」> my.password'如果存在,就省略''_''符號,只寫''pwd''給文件。所以也就是''vi''可以是更好的選擇 – Nutle