在 Spark Streaming 中执行多个操作 parallel/async
Execute multiple actions parallel/async in Spark Streaming
有没有办法在火花流中执行多个动作async/parallel?
这是我的代码:
positions.foreachRDD(rdd -> {
JavaRDD<A> pbv = rdd.map(p -> A.create(p));
javaFunctions(pbv).writerBuilder("poc", "table_a", mapToRow(A.class)).saveToCassandra();
JavaRDD<D> pbd = rdd.map(p -> D.create(p));
javaFunctions(pbd).writerBuilder("poc", "table_d", mapToRow(D.class)).saveToCassandra();
JavaRDD<L> pblv = rdd.map(p -> L.create(p));
javaFunctions(pblv).writerBuilder("poc", "table_l", mapToRow(L.class)).saveToCassandra();
JavaRDD<V> pbld = rdd.map(p -> V.create(p));
javaFunctions(pbld).writerBuilder("poc", "table_v", mapToRow(V.class)).saveToCassandra();
});
我想并行执行 saveToCassandra 操作,这可以使用 "spark technics" 还是只能通过自制的 Thread/Executer 处理?
感谢您的帮助!
此致,
马库斯
@massg 的评论可能是这种分叉的最快方法,但如果你不想这样做,你可以通过拆分流来更轻松地做到这一点。
类似
positions.map(A.create(p)).saveToCassandra
positions.map(D.create(p)).saveToCassandra
positions.map(L.create(p)).saveToCassandra
positions.map(V.create(p)).saveToCassandra
通过作用于 DSTream,所有这些请求将并行发生。
有没有办法在火花流中执行多个动作async/parallel? 这是我的代码:
positions.foreachRDD(rdd -> {
JavaRDD<A> pbv = rdd.map(p -> A.create(p));
javaFunctions(pbv).writerBuilder("poc", "table_a", mapToRow(A.class)).saveToCassandra();
JavaRDD<D> pbd = rdd.map(p -> D.create(p));
javaFunctions(pbd).writerBuilder("poc", "table_d", mapToRow(D.class)).saveToCassandra();
JavaRDD<L> pblv = rdd.map(p -> L.create(p));
javaFunctions(pblv).writerBuilder("poc", "table_l", mapToRow(L.class)).saveToCassandra();
JavaRDD<V> pbld = rdd.map(p -> V.create(p));
javaFunctions(pbld).writerBuilder("poc", "table_v", mapToRow(V.class)).saveToCassandra();
});
我想并行执行 saveToCassandra 操作,这可以使用 "spark technics" 还是只能通过自制的 Thread/Executer 处理?
感谢您的帮助!
此致, 马库斯
@massg 的评论可能是这种分叉的最快方法,但如果你不想这样做,你可以通过拆分流来更轻松地做到这一点。
类似
positions.map(A.create(p)).saveToCassandra
positions.map(D.create(p)).saveToCassandra
positions.map(L.create(p)).saveToCassandra
positions.map(V.create(p)).saveToCassandra
通过作用于 DSTream,所有这些请求将并行发生。