2017-12-05 13 views
0

私は助けが必要です。私は、Pythonコードを使用してWebページからファイルをダウンロードし、ローカルファイルシステムに配置してから、putコマンドを使用してHDFSに転送してから操作を実行します。Webページからファイルを直接ダウンロードしてローカルファイルを使用せずにHDFSに直接ファイルを配置する方法は?

しかし、ファイルサイズが非常に大きく、ローカルファイルシステムへのダウンロードが適切な手順でない場合があります。ですから、ファイルをローカルファイルシステムを使用せずにHDFSに直接ダウンロードしたいのです。

進歩するための最良の方法がいくつかありますか? 私の質問に誤りがある場合は、私を修正してください。 ありがとうございます。

答えて

0

することはでき、それが直接ダウンロードからディスクに書き込む回避するために、パイプ、例えば:

curl server.com/my/file | hdfs dfs -put - destination/file 

-put-パラメータは標準入力から読み込み(documentationを参照)することを伝えます。

ローカルのファイルシステムではなく、ローカルマシンを経由してダウンロードをルーティングします。ローカルマシンを使用せずにファイルをダウンロードする場合は、マップのみのMapReduceジョブを作成できます。ダウンロードされるファイルのリストを含む入力ファイルをダウンロードし、ダウンロードして結果をストリーミング出力する。これには、クラスタにインターネットへのアクセス権が必要であることに注意してください。これは一般に望ましくありません。

+0

これは、ローカルシステムにファイルをダウンロードするか、それともできませんか? – Rahul

+0

私が提供したコマンドはローカルファイルシステムに何もダウンロードしませんが、ローカルマシンのネットワーク経由でダウンロードしてからHDFSに再アップロードします。その間にファイルシステムに書き込むことはありません。これがあなたが探していたものかどうかはわかりません。また、ローカルマシンを完全に切り取る方法についても説明しました。 – krog

関連する問題