如何在Kryo中注册graphx Edge类?

我一直在尝试向Kryo注册Edge类,但是我总是遇到以下错误。

java.lang.IllegalArgumentException: Class is not registered: org.apache.spark.graphx.Edge\nNote: To register this class use: kryo.register(org.apache.spark.graphx.Edge.class);

以下行有什么问题?

sc.getconf.registerKryoClasses(Array(Class.forName("org.apache.spark.graphx.Edge")))

我应该怎么做?

iCMS 回答:如何在Kryo中注册graphx Edge类?

我在注册 graphx 类时遇到问题。这终于对我有用了...

import org.apache.spark.graphx.GraphXUtils

val conf = new SparkConf().setAppName("yourAppName")
GraphXUtils.registerKryoClasses(conf)

这是幕后发生的事情......

https://github.com/amplab/graphx/blob/master/graphx/src/main/scala/org/apache/spark/graphx/GraphKryoRegistrator.scala

在你的情况下......我不知道为什么以下不能正常工作,因为 Edge 被暴露......

conf.registerKryoClasses(Array(classOf[Edge]))

但我认为graphx中有一些私有类没有通过spark API公开,至少我在graphx repo中看到了它们,但在spark.graphx repo中没有看到。就我而言,在使用 GraphXUtils 方法之前,我无法注册 VertexAttributeBlock

本文链接:https://www.f2er.com/1802863.html

大家都在问