私は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)
誰かがこれに対する解決策を提供できますか?前もって感謝します。
ファイルを参照してパスワードを書き込むと、「\ n」がファイルに書き込まれます。問題を回避するには、以下のアプローチを使用することをお勧めします
echo -n "Your_sqoop_password" > sqoop.password
まだこの問題が発生しているかどうかはわかりません。パスワードファイルは任意のフォルダに置くことができます。次の構文を試してみてください。うまくいくはずです。
--password-file file:///user/root/database.password
パスワードを作成するときは、echo -n
オプションを使用してください。 (-n
オプションはすべての末尾のスペースを削除します)。
パスワード「myPassword」があり、それをファイルsqoop.password
に保存したい場合は、以下の手順に従います。
パスワードの作成コマンドを使用
echo -n "myPassword" > sqoop.password
ファイルをHDFSにアップロードファイルはHDFSに存在する必要があるため
hadoop fs -put sqoop.password /user/keepMyFilesHere
スクープインポートコマンドを書く
sqoop list-tables --connect jdbc:mysql://localhost/kpdatabase --username root --password-file /user/karanpreet.singh/sqoop.password
これは間違いなく機能します!
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
sqoop
コマンドを実行しているユーザーがファイル/sqoop.password
(400のアクセス許可が設定されている)の所有者であることを確認します。これにより、パスワードファイルが読み取り可能になります。
sqoop.password
ファイルの最後に余分な非印刷文字(改行文字など)がないことを確認してください。これを確認する簡単な方法の1つは、ファイルのサイズを確認することです。パスワードが言う場合 「sqoop」、ファイルのサイズは5である必要があります。それより大きい場合は、HDFSからsqoop.password
ファイルを削除し、ローカルで再生成して、HDFSに戻します。
上記の情報を報告する必要があるコマンドは次のとおりです。hadoop fs -ls /sqoop.password
パスワードファイルにゴミ文字が含まれていないか確認してください。同じ問題が発生していましたが、ファイルの最後に\ n文字が含まれていることがわかり、sqoopはそれをパスワード文字列の一部と見なしました。以下に説明するようにパスワードファイルを作成してみてください。パスワードファイルを使用するよりも、echo -n "root_password"> password.txtroot_passwordの代わりにパスワードを入力してください。
sqoopパスワードに関連するすべての疑問については、以下のリンクをたどってください。