2017-06-10 8 views
0

詳細:sqoopインポートが失敗しない限り、接続文字列にパスワード

Sqoop HDFSとローカルFSに位置1.4.6

しようとしましたパスワードファイル。また、私は、接続文字列にユーザー名とパスワードを入れない限り、私は、SQL Serverから認証の失敗を取得していますsqoopインポートを実行する場合--password-file file:///user/username/password.file

sqoop import \ 
--connect 'jdbc:sqlserver://servername;database=databasename' \ 
--username userxxx \ 
--password-file password.file \ 
--table 'sales' \ 
--fields-terminated-by '|' \ 
--null-string '\\N' \ 
--null-non-string '\\N' \ 
--hive-import 

としてパスワードファイルを宣言してみました。 -Pまたは--password-fileを使用しようとすると、認証は失敗します。 docs 1として

答えて

0

--password-file

データベースにパスワードを供給する安全な方法。パスワードを400のアクセス権を持つユーザーのホームディレクトリのファイルに保存し、--password-file引数を使用してそのファイルへのパスを指定し、資格情報を入力するのが望ましい方法です。 Sqoopはファイルからパスワードを読み込み、ジョブ設定でパスワードを公開せずに安全な手段を使ってMapReduceクラスタに渡します。パスワードを含むファイルは、ローカルFSまたはHDFS上にあることができます。

ファイルのアクセス許可を確認してください。ホームディレクトリにある必要があります。

ローカルFSを使用している場合、SqoopはHDFSで--password-fileを予期しています。file://を追加してください。

例:--password-file file:///user/dev/database.password

-Pオプション

それはコンソールからパスワードを読み込みます。これを使うと、コマンド実行中にパスワードを書かなければなりません。

password

単にあなたのパスワードを追加します。

+0

> /usr/bin/expect script.sh 

おかげ – ATS

+0

@ATS:。?

「SHスクリプトが

てみてくださいロードに失敗することが予想される場合唯一の方法です。私はこれらを自分で試してみました。 –

0

さらに良い方法が1つあります。 スクリプトを使用するを使用する。

は「script.sh」と言うスクリプトファイルを作成します。

#!/usr/bin/expect -f 
     set password "<ur password desination or file>" 
     spawn sqoop <args> # define sqoop command here 
     expect "*?Enter password:*" # As ask for password as while reading from database 
     send -- "$password\r" 
     expect sleep 15 # or you can use "set timeout -1" for infinite waiting time 
     expect eof 
EOF 
done 

あなたがSPAWNコマンドは、など存在しないこと、エラーに直面している場合、それは期待がインストールされていないことを意味します。 centos7

yum install expect -y 

とファイル「スクリプトを実行するために

。私の知る限り、これらの私の記事で説明したよう他のアイデアを、私はそれらのすべてを試してみました

関連する問題