0

私はEMRを使用してfs.moveFromLocalFile APIを使用してローカルファイルシステムからSparkのS3にフォルダを移動しています。アップロードされたすべてのフォルダに対して_ $ folder $という名前のEMRFSによって作成された0バイトのファイルを除いて、すべて正常に動作します。EMRはHDFSのmoveFromLocalFile APIを使用しているときに0バイトのファイルを作成します

このダミーファイルを作成せずにフォルダを移動する方法はありますか? (このファイルを手動で削除する以外)。また、このダミーファイルはなぜ作成されますか?私は現在、EMRチームが推奨するs3://プロトコルを使用しています。

答えて

0

通常、ローカルファイルシステムまたはhdfsのために呼び出されるmkdir()関数は、mkdirフォルダの名前で作成され、_ $ folder $によって追加されるs3の空のファイルを作成します。 S3では、null値(ファイル)を持つキー(パス名)を持つことができないため、「空のフォルダ」という概念はありません。

完全な世界では、mkdir(s3:// bucket/path)はnoopにする必要があります。

+0

あなたが思っているよりも厄介です。 (a)ファイルの下でmkdirできないこと、そして(b)lsを実行するときに空のディレクトリが存在することを確認する必要があります。 'mkdir path 'というfsの期待されるセマンティクスの中にあります。 ls path'は何か成功したものを返します。 FSクライアントは、下のものが作成されたときにマーカーファイルを削除します –

0

EMR fsについてわからない。これはS3nクライアントが使用するのと同じ拡張機能のようです。これらのファイルは、パスを一覧表示/統計するときにクライアントで削除されます。

ASFのS3aは、接尾辞「/」が付いたものを作成します。

関連する問題