以下のプログラムは、ログファイルの「ERROR」の数を計算します。最後に、その値がコンソールに表示されます。プログラムが糸クライアントで実行されるとき、アキュムレータ正しい値509がコンソールに表示されますが、糸クラスターモードで実行されているときは、そのような値は表示されません。糸クラスターモードで印刷する方法は?アキュムレータを糸クラスターモードで印刷するには?
HDPサンドボックス2.4で実行しようとobject ErrorLogsCount{
def main(args:Array[String]){
val sc = new SparkContext();
val logsRDD = sc.textFile(args(0),4)
val errorsAcc = sc.accumulator(0,"Errors Accumulator")
val errorsLogRDD = logsRDD.filter(x => x.contains("ERROR"))
errorsLogRDD.persist()
errorsLogRDD.foreach(x => errorsAcc += 1)
errorsLogRDD.collect()
//printing accumulator
println(errorsAcc.name+" = "+errorsAcc)
//Saving results in HDFS
errorsLogRDD.coalesce(1).saveAsTextFile(args(1))
}
}
(1.6.0スパーク)