来自 RDD 的 updateStateByKey
updateStateByKey from RDD
我对 Spark-graphx 有点陌生,所以如果这是一个愚蠢的问题,请原谅。我也更愿意在 Java 中执行此操作,而不是 Scala,如果可能的话。
我需要 运行 对 JavaDStream 的 RDD 进行 graphx 计算,但我需要将结果回滚到我的状态对象中。
- 我正在 foreachRDD 内部进行 graphx 计算,因为我不知道从 JavaDStream;
获取 RDD 的另一种方法
- updateStateByKey 仅适用于 JavaDStream;
- 每个图顶点1-1映射到每个状态对象,所以如果有一种方法可以访问foreachRDD内部的状态对象,那么这将解决它。但是只是传递对顶点内部对象的引用并在其中调用更新函数让我觉得是不好的做法,但我可能是错的?
你会如何解决 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 方法必须更适合我的算法。
我对 Spark-graphx 有点陌生,所以如果这是一个愚蠢的问题,请原谅。我也更愿意在 Java 中执行此操作,而不是 Scala,如果可能的话。
我需要 运行 对 JavaDStream 的 RDD 进行 graphx 计算,但我需要将结果回滚到我的状态对象中。
- 我正在 foreachRDD 内部进行 graphx 计算,因为我不知道从 JavaDStream; 获取 RDD 的另一种方法
- updateStateByKey 仅适用于 JavaDStream;
- 每个图顶点1-1映射到每个状态对象,所以如果有一种方法可以访问foreachRDD内部的状态对象,那么这将解决它。但是只是传递对顶点内部对象的引用并在其中调用更新函数让我觉得是不好的做法,但我可能是错的?
你会如何解决 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 方法必须更适合我的算法。