2017-01-28 9 views
6

Apache Spark Javaを使用してhdfsからファイルをストリームとして読み込むにはどうすればよいですか? ファイル全体を読み込みたくない場合は、条件が満たされたときにファイルの読み込みを停止するためにファイルストリームを作成したいのですが、どのようにApache Sparkで行うことができますか?Apache SparkファイルをHDFSからストリームとして読み込みます

+0

Chck this :: https://github.com/apache/spark/blob/master/examples/src/main/scala/org/apache/spark/examples/streaming/HdfsWordCount.scala – yoga

+0

この例はありません私の質問に関連して。 – Maksym

+0

達成しようとしていることをよりよく説明できますか?なぜそれをストリームとして必要とするのですか(単にRDD /データフレームとして読むのではなく)?スパークストリーミングを使用してHDFSディレクトリの内容を読み込み、次の時間を待たずに終了する方法を尋ねていますか? DStreamや構造化ストリーミングについても話していますか? –

答えて

1

あなたはSSCメソッドを使用してストリーミングHDFSファイルを使用することができます

ヴァルSSC =新しいStreamingContext(sparkConf、秒(batchTime))

ヴァルDSTREAM = ssc.fileStream [LongWritable、テキスト、TextInputFormat]( streamDirectory 、(x:パス) => true、newFilesOnly = false)

上記の使用api 処理するパスをフィルタリングする機能。

条件がファイルパス/名前ではなく、データに基づいている場合は、条件が満たされればストリーミングコンテキストを停止する必要があります。

1つのスレッドでは、ストリーミングコンテキストが停止していることを確認し、sscが停止している場合は、別のスレッドに待機して新しいストリーミングコンテキストを作成するよう通知する必要があります。

2)2番目のスレッドでは、条件を確認し、条件が満たされた場合にストリーミングコンテキストを停止する必要があります。

説明が必要な場合はお知らせください。

+0

私は例えば2つのファイルがあり、それぞれから数行から数えてN行だけを読みたいという問題があります。あなたのソリューションは非常に高価になります。 – Maksym

関連する問題