Ich exportiere Informationen von HDFS in MS-SQL mit SQOOP. Ich führe SQOOP durch OOZIE. Im Moment habe ich die UID, PWD für die JDBC-Verbindung im OOZIE-Workflow fest programmiert. Sobald ich auf prod umschalte, kann ich das nicht mehr machen. Was ist der beste Weg, Authentifizierungsinformationen in einer solchen Situation weiterzugeben?Wie kann ich SQOOP ein Passwort über OOZIE zur Verbindung mit MS-SQL geben?
<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>
Ich könnte sie als Parameter übergeben wie $ userName, $ password. Aber die tatsächliche UID/Pwd würde immer noch in der Oozie Webkonsole zeigen.
UPDATE
ich zwei Möglichkeiten ausprobiert habe (wie unten vorgeschlagen), dies zu tun ... In VIM ich PWD erstellt müssen nur das Passwort (keine Leer- oder irgendetwas anderes). Nannte dieses pwd.
1) Ich habe versucht, das Dateisystem zu verwenden. Ich habe jedoch eine IOException, die besagt, dass die Datei nicht existiert. Nach dem Durchsehen des Codes sieht es aus, dass sqoop conf verwendet, um auf die fs zuzugreifen. Also nehme ich an, wenn Oozie durchgelaufen ist, wird es nur Zugriff auf HDFS haben.
2) Ich habe die Passwortdatei an einen zufälligen Speicherort auf hdfs geladen./users/mein-name/pwd (pwd ist die Datei). Jetzt kann es auf die Datei zugreifen (da ich keine IOException bekomme). Es kann jedoch keine Verbindung zum SQL Server hergestellt werden. Ich bin mir nicht sicher, was ich tun muss, um es zum Laufen zu bringen.
UPDATE 2 Ich mag so die Passwort-Datei wurde zu erstellen: echo "pwd" > my.password
Dies fügt ein EOL in die Datei my.password ich echo -n "pwd" > my.password
geändert und jetzt funktioniert es.
Ich wollte nur bemerken, dass (zumindest auf CentOS 7) '' echo -n "pw_d"> mein.passwort'' das '' _'' Symbol auslässt, wenn es existiert, schreibe nur '' pwd'' in die Datei. Das heißt, '' vi'' kann eine bessere Alternative sein – Nutle