2017-08-10 1 views
0

背景 - さまざまなファイルタイプ(csvまたはparquet)をpysparkに読み込もうとしていますが、ファイルタイプを決定するプログラムを作成する作業があります。ディレクトリであるHDFSの "ファイル"

ここでは、寄木細工のファイルは常にディレクトリであり、寄木細工のファイルはHDFSのディレクトリとして表示されているようです。

また、ディレクトリであるcsvファイルがあります。ファイル名はディレクトリ名であり、ディレクトリには複数のパーツファイルが含まれています。どのようなプロセスがこれをしますか?

なぜいくつかのファイル - 「ファイル」といくつかのファイル「ディレクトリ」はありますか?

答えて

0

これらのファイルを生成したプロセスによって異なります。たとえば、MapReduceが出力を生成すると、常にディレクトリが作成され、そのディレクトリ内に減速機ごとに1つの出力ファイルが作成されます。これは、各減速器がその出力を独立して生成できるように行われる。

スパークのCSV packageから判断すると、1つのファイルに出力することを想定しています。したがって、おそらく単一ファイルのCSVはMapReduceによってSparkとディレクトリによって生成されています。

できるだけジェネリックであるためには、次のことを行うことをお勧めします。該当するファイルがディレクトリかどうかを確認します。そうでない場合は、拡張子を確認してください。はいの場合は、ディレクトリ内のファイルの拡張子を見てください。これはあなたの状況ごとに機能するはずです。

いくつかの入力フォーマット(例えば、MapReduceの入力フォーマットは)のみ入力としてディレクトリを受け入れる注意、およびファイルのみのファイル/グロブを受け入れるいくつか(例えば、スパークのtextFile)。相互作用しているライブラリから期待されることを認識する必要があります。

+0

ありがとうございます!それが、Mapreduceがディレクトリとしてファイルを吐き出すという、私が見逃していたものです。私はMRの実際の成果を決して見ていないほど長い間統治されてきました。私たちのプログラムは非常に一般的になるように設計されているので、そのためのケースを含める必要がありますが、今ではこの異なるタイプがどこから来ているのか分かります。 – RDS

0

ハードドライブのすべてのデータは、ファイルとフォルダで構成されています。 の基本的な違いは、ファイルにはデータが格納され、 フォルダにはファイルやその他のフォルダが格納されるという点です。

ハイドープ実行エンジンは、一般に、使用されるレデューサーまたはエグゼキュータの数に基づいてディレクトリを作成し、複数のパートファイルを出力として書き出します。

多くの出力ファイルabc.csvは、データが1つのファイルであることを意味するものではありません。 MapReduce(一般に)が出力ファイル(パーツファイル)を作成する新しいディレクトリとして解釈する出力場所です。 Sparkの場合、(おそらく.saveAsTextFileを使用して)ファイルを書き込んでいるときに、1つのファイルしか作成されないことがあります。

関連する問題