私は Spark ストリーミングの初心者で、出力の保存に行き詰まっています。
私の質問は、JavaPairDStream の出力をテキスト ファイルに保存するにはどうすればよいですか。テキスト ファイルは、DStream 内の要素のみでファイルごとに更新されますか?
たとえば、wordCount の例では、
JavaPairDStream<String, Integer> wordCounts = words.mapToPair(
new PairFunction<String, String, Integer>() {
@Override
public Tuple2<String, Integer> call(String s) {
return new Tuple2<>(s, 1);
}
}).reduceByKey(new Function2<Integer, Integer, Integer>() {
@Override
public Integer call(Integer i1, Integer i2) {
return i1 + i2;
}
});
を使用して次の出力を取得しますwordCounts.print()
。
(Hello,1)
(World,1)
最後の行をテキスト ファイルに書き込みたいと思います。テキスト ファイルは、wordCounts
.
私は次のアプローチを試しました、
mappedRDD.dstream().saveAsTextFiles("output","txt");
これにより、バッチごとにいくつかの意味のないファイルを含む一連のディレクトリが生成されます。
別のアプローチは、
mappedRDD.foreachRDD(new Function2<JavaPairDStream<String, Integer>, Time, Void>() {
public Void Call(JavaPairDStream<String, Integer> rdd, Time time)
{
//Something over rdd to save its content on a file???
return null;
}
});
助けていただければ幸いです。
ありがとうございました