Unten Code funktioniert gut, aber es dauert einige Zeit, um nach Cassandra zu schreiben, wenn wir einen riesigen Zustrom von Transaktionen haben.Spark Streaming - mit foreachPartition und saveToCassandra für bessere Parallelisierung
Unten Code ist schriftlich in Cassandra in sequenziellen und führt in einem Executor.
parsedStream.saveToCassandra("test", "ct_table", SomeColumns("emp_id","emp_name","emp_sal","emp_dept"))
Aber ich wollte den Schreibvorgang an Cassandra parallelisieren, indem ich foreachPartition mache. Aber ich sehe nicht saveToCassandra Option bei ForeachPartition.
parsedStream.foreachRDD{rdd =>
rdd.foreachPartition { partition =>
partition.saveToCassandra("test", "ct_table", SomeColumns("emp_id","emp_name","emp_sal","emp_dept"))
}
}
Wie können wir das erreichen?
'saveToCassandra' ist auf der Ebene' RDD'/'DStream' definiert, während' partition' eine einfache Skala 'Iterator' ist, daher sieht man es nicht definiert. –
OK. Irgendeine Idee, wie wir erreichen könnten, Cassandra in parallelen Exekutionen von allen meinen Executoren zu schreiben? – JKPEAK
könnten Sie tun parseStream.repartition (num) .saveToCassandra' – Knight71