2016-03-31 3 views
-1

私はできる限り私の要件を説明しようとします。しかし、それがまだ不明な場合は私に尋ねてください。Spark Streamソースの設計に関するアドバイスをいただけますか?

環境

私は5つのノードを持っています(将来的にはより多くなります)。それぞれ5分ごとに大きなCSVファイル(約1〜2 GB)を生成します。私は5分でこれらのCSVファイルを処理するためにapacheのスパークストリームを使用する必要があります。したがって、これらの5つのファイルは私の入力DStreamソースです。私は

を行うことを計画して何

私は以下のようなtextFileStreamを使用する計画:

ssc.textFileStream(dataDirectory) 

5分ごとに私はHDFS上のディレクトリにこれらのCSVを配置します。次に、上記の関数を使用してinputDStreamを生成します。

以上のよう

の問題textFileStreamは一つの完全なファイルの代わりに、5つのファイルが必要です。私は、HDFS内のファイルをマージする方法がわからない

質問

  1. あなたはどのようにPythonがHDFS内のファイルをマージする教えてもらえますか?
  2. 私の方法よりも良い提案がありますか?また、私は

答えて

0

あなたは常にワイルドカード文字を使用してディレクトリ内のファイルを読み込むことができますアドバイスをしてください。 これは問題ではありません。つまり、DStreamのRDDは、その時点でのすべてのファイルのマージ結果です。

は限りアプローチが行くように、あなたのは簡単で、作品です。

NB:あなたが気をつけなければなりません唯一のものは、CSVファイルそのものの原子です。あなたのファイルはmvないcopy

おかげ マナス

+0

おかげ@Manasとして(あなたが入ってくるファイルのために見ている)フォルダに移動しなければなりません。しかし、DStreamを構築する。私はtextFileStream APIを使用する必要があります。そして、このAPIはディレクトリをパラメータとして受け入れています。だから、いくつかのコード例を挙げてもらえますか? –

+0

はい、 'textFileStream'は、ディレクトリとしてパラメータをとります。したがって、任意の時点でそのディレクトリに来るファイルは、いつでもRDDの一部である可能性があります。私は今私とtextFileStreamの例を持っていません。しかし、私はそれを探して、それを見つけたときに投稿します。 – Manas

+0

実際には、DStreamは一連のRDDで構築されています。したがって、ディレクトリ内のファイルをワイルドカードで5分ごとに読み取ってから、これらのRDDでDStreamを構築することができます。しかし、私はこれらのRDDでDStreamを構築する適切な方法を知らない。あなたは何か考えていますか? –

関連する問題