来自 RDD 的 updateStateByKey

updateStateByKey from RDD

我对 Spark-graphx 有点陌生,所以如果这是一个愚蠢的问题,请原谅。我也更愿意在 Java 中执行此操作,而不是 Scala,如果可能的话。

我需要 运行 对 JavaDStream 的 RDD 进行 graphx 计算,但我需要将结果回滚到我的状态对象中。

你会如何解决 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?
});

我把我的图形计算作为一个转换,然后 运行ning 到了折叠期间挂起的点(在 Pregel 中)和 Scala 的错误 运行ning JavaConverters.asScalaIteratorConverter 没有合适的迭代器...

简而言之,在网上阅读到 Graphframes 在 Java 方面可能比 graphx 更稳定,因为将 Scala 包装在 Java Dataframes 的上下文中显然更容易,我放弃了这种方法并移动到 Graphframes。对于 运行 遇到类似问题的其他人,我很抱歉我没有提供解决方案,但我发现 Dataframe 方法必须更适合我的算法。