質問: 背景 -- HTTP REST APIを利用して、HDFSから特定のディレクトリ配下のすべてのファイルを取得したいと考えています。 curlコマンドにてファイルを取得できることはわかりましたが、ディレクトリの取得はできないことが分かりました。 作りこみをすれば取得できるとの記事がありましたが、具体的にどのように作りこみをすればよいかイメージが湧きません。 実現したいこと ------- HDFSからディレクトリ配下のすべてのファイルを取得したい 質問 -- 処理としては以下のような処理で実現できるのでしょうか。 1、curlコマンドにてディレクトリリストを取得 2 ディレクトリリストをもとに1ディレクトリ単位に配下のファイルリストを取得 3 ファイルリストをもとに1ファイル単位にcurlコマンドにてファイル取得 この場合、かなり複雑な処理なるのではないかと思っています。 別の手段があればそちらで実現したいと思っています。 前提条件 ---- curlコマンドを実行するサーバは、HDFSとは別のLinuxサーバになります。
回答: ディレクトリ単位ではできないことが分かったため、以下の手法で実現することにしました。 事前準備 ディレクトリリスト(フルパス、最下層まで) 処理概要 1.ディレクトリリストを読み込み 2.読み込んだ1ディレクトリに対して、ディレクトリ取得APIを発行 curl -i "http://:/webhdfs/v1/?op=LISTSTATUS" 3.返ってってきた値からファイル名を取得 4.ファイルを取得APIを発行 curl -i -U "http://:/webhdfs/v1//?op=OPEN 参考URL https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/WebHDFS.html