0

Hadoop FileStatus APIを使用して、ディレクトリを削除するためにフォルダが空かどうかを判断しています。

s3nに空のディレクトリがあるかどうかを判断するには、FileStatus []の長さをチェックし、ゼロに等しい場合は、fs.delete(path、false)を介してHadoopファイルシステムに削除を実行するように要求します。ここでFalseは、非再帰的な削除要求を表します。

FTPおよびHDFSの場合、ファイルと、これらのファイルを含む空のディレクトリが期待どおりに削除されます。ただし、S3nの場合、空のディレクトリが残ります。理由はわかりません。

インメモリS3ファイルシステムを使用するローカルユニット/統合テストがありますが、ここでは削除が期待どおりに機能します。ただし、実際のS3nファイルシステムに対してコードを実行すると、失敗します(空のディレクトリは削除されませんが、ファイルは削除されます)。

任意の提案やポインタをいただければ幸いです。ありがとうございました。

4

1 に答える 1

0

例外やエラーメッセージは表示されず、バケットでバージョン管理が有効になっていないように見えるため、次のことを試してください。

S3は「フラットな」ファイルシステムであり、フォルダの概念はありません。その名前のファイルがないという理由だけで、長さがゼロである可能性があります。「ディレクトリ」と呼んでいるのは、実際にはS3の単なるファイルプレフィックスです。明確にするのに役立つかもしれないので、この答えを見てください。

于 2012-07-12T11:28:50.620 に答える