[英]updateStateByKey from RDD
我对 Spark-graphx 有点陌生,所以如果这是一个愚蠢的问题,请原谅。 如果可能的话,我也更愿意在 Java 而不是 Scala 中执行此操作。
我需要对 JavaDStream 的 RDD 运行 graphx 计算,但我需要将结果回滚到我的 state object。
在 Java 你会如何解决这个问题? 如果有更好的方法,我准备将计算重组为不同的逻辑流程。
为了使它更直观,结构如下所示:
JavaDStream<StateObject> stream = inputDataStream.updateStateByKey(function);
stream.foreachRDD(rdd -> {
Graph<Vertex, EdgeProperty> graph = GraphImpl.apply(/* derive the Vertex and EdgeProperty from the rdd */);
JavaRDD<Vertex> updatedVertices = graphOperation(graph);
// How to put the contents of updatedVertices back into stream?
});
我把我的图形计算作为一个转换,并在折叠期间(在 Pregel 中)启动并运行到挂起点,并且在运行 JavaConverters.asScalaIteratorConverter 时出现 Scala 错误,没有合适的迭代器......
简而言之,在网上阅读到 Graphframes 对于 Java 可能比 graphx 更稳定,因为将 Scala 包装在 Dataframes 的 Java 上下文中显然更容易,我放弃了这种方法并转向 Graphframes。 对于遇到类似问题的其他人,我很抱歉我没有提供解决方案,但我发现 Dataframe 方法必须更适合我的算法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.