web-dev-qa-db-ja.com

Sqoop Import--password-file関数がsqoop1.4.4で正しく機能しない

私はhadoop-1.2.1を使用しており、sqoopのバージョンは1.4.4です。

次のクエリを実行しようとしています。

sqoop import --connect jdbc:mysql://IP:3306/database_name --table clients --target-dir /data/clients --username root --password-file /sqoop.password -m 1

sqoop.passwordは、パス/sqoop.passwordのHDFSにアクセス許可400で保持されているファイルです。

それは私にエラーを与えています

Access denied for user 'root'@'IP' (using password: YES)

誰かがこれに対する解決策を提供できますか?前もって感謝します。

14
Kanav Narula

ファイルを参照してパスワードを書き込むと、「\ n」がファイルに書き込まれます。問題を回避するには、以下のアプローチを使用することをお勧めします

echo -n "Your_sqoop_password" > sqoop.password

15
Nandakishore

まだこの問題が発生しているかどうかはわかりません。パスワードファイルは任意のフォルダに置くことができます。次の構文を試してみてください。うまくいくはずです。

--password-file file:///user/root/database.password
12
ganeshrj

パスワードを作成するときは、echo -nオプションを使用してください。 (-nオプションはすべての末尾のスペースを削除します)。
パスワード「myPassword」があり、それをファイルsqoop.passwordに保存したい場合は、以下の手順に従います。

  1. パスワードの作成コマンドを使用

    echo -n "myPassword" > sqoop.password
    
  2. ファイルをHDFSにアップロードファイルはHDFSに存在する必要があるため

    hadoop fs -put sqoop.password /user/keepMyFilesHere
    
  3. スクープインポートコマンドを書く

    sqoop list-tables --connect jdbc:mysql://localhost/kpdatabase --username root --password-file /user/karanpreet.singh/sqoop.password
    

これは間違いなく機能します!

3
KP Fingh

Sqoopのドキュメントによる

パスワードをusersホームディレクトリの400のアクセス許可のファイルに保存し、--password-file argumentを使用してそのファイルへのパスを指定する必要があります。資格情報を入力するための推奨される方法です。次に、Sqoopはファイルからパスワードを読み取り、ジョブ構成でパスワードを公開せずに、安全な手段を使用してMapReduceクラスターに渡します。パスワードを含むファイルは、ローカルFSまたはHDFSのいずれかにあります。

Rootユーザーでsqoopジョブを実行している場合、パスワードファイルは/user/root/ in[〜#〜] hdfs [〜#〜]

sqoop import --connect jdbc:mysql://database.example.com/employees \
    --username venkatesh --password-file /user/root/database.password

詳細については、確認できます this

3
Prasad Khode
  1. sqoopコマンドを実行しているユーザーがファイル/sqoop.password(400のアクセス許可が設定されている)の所有者であることを確認します。これにより、パスワードファイルが読み取り可能になります。

  2. sqoop.passwordファイルの最後に余分な非印刷文字(改行文字など)がないことを確認してください。これを確認する簡単な方法の1つは、ファイルのサイズを確認することです。パスワードが言う場合 「sqoop」、ファイルのサイズは5である必要があります。それより大きい場合は、HDFSからsqoop.passwordファイルを削除し、ローカルで再生成して、HDFSに戻します。

    上記の情報を報告する必要があるコマンドは次のとおりです。

    hadoop fs -ls /sqoop.password

1
Jagrut Sharma

パスワードファイルにゴミ文字が含まれていないか確認してください。同じ問題が発生していましたが、ファイルの最後に\ n文字が含まれていることがわかり、sqoopはそれをパスワード文字列の一部と見なしました。以下に説明するようにパスワードファイルを作成してみてください。パスワードファイルを使用するよりも、echo -n "root_password"> password.txtroot_passwordの代わりにパスワードを入力してください。

1
Ayub

sqoopパスワードに関連するすべての疑問については、以下のリンクをたどってください。

www.ericlin.me

0
Pala