私はSQOOPを使用してHDFSからMS-SQLに情報をエクスポートしています。私はOOZIEを通じてSQOOPを実行しています。今は、OOZIEワークフローで、jdbc接続のためのuid、pwdをハードコーディングしました。私はprodに切り替えると、私はこれを行うことができなくなります。このような状況で認証情報を渡す最善の方法は何ですか?私は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
私はこれを行うには、2つの方法を(怒鳴る示唆したように)試してみた... VIMで、私はちょうどパスワード(なし空白または何かを)持っているPWDを作成しました。このpwdと呼ばれています。
1)ファイルシステムを使用しようとしました。しかし、ファイルが存在しないというIOExceptionがあります。コードを調べた後、sqoopはfsにアクセスするためにconfを渡したように見えます。だから、私はそれがHDFSへのアクセスのみを持つことになると仮定しています。
2)パスワードファイルをhdfs上のランダムな場所にロードしました。/users/my-name/pwd(pwdはファイル)。これでファイルにアクセスできます(IOExceptionが発生しないため)。ただし、SQLServerに接続できません。私はそれを働かせるために何をする必要があるのか分かりません。
私はそうのようなパスワードファイルを作成していたUPDATE 2 :echo "pwd" > my.password
は、これは私がecho -n "pwd" > my.password
に変更し、今それが動作ファイルmy.password にEOLを追加します。
ちょうど(少なくともCentOS 7で) '' echo -n "pw_d"> my.password''は '' _''シンボルがあればそれを省略し、 '' pwd''だけをファイル。つまり、 '' vi''がより良い代替手段になります – Nutle