0

我使用最新的 SJS 版本(主),应用程序扩展了 SparkHiveJob。在 runJob 实现中,我有以下内容

val eDF1 = hive.applySchema(rowRDD1, schema)

我想坚持 eDF1 并尝试了以下

    val rdd_topersist = namedObjects.getOrElseCreate("cleanedDF1", {
        NamedDataFrame(eDF1, true, StorageLevel.MEMORY_ONLY)
       })

发生以下编译错误的地方

could not find implicit value for parameter persister: spark.jobserver.NamedObjectPersister[spark.jobserver.NamedDataFrame] 
not enough arguments for method getOrElseCreate: (implicit timeout:scala.concurrent.duration.FiniteDuration, implicit persister:spark.jobserver.NamedObjectPersister[spark.jobserver.NamedDataFrame])spark.jobserver.NamedDataFrame. Unspecified value parameter persister.

显然这是错误的,但我不知道出了什么问题。我对 Scala 还很陌生。

有人可以帮助我从 NamedObjectSupport 中理解这种语法吗?

def getOrElseCreate[O <: NamedObject](name: String, objGen: => O)
                                    (implicit timeout: FiniteDuration = defaultTimeout,
                                    persister: NamedObjectPersister[O]): O
4

1 回答 1

0

我认为您应该定义隐式持久性。查看测试代码,我看到类似这样的内容

https://github.com/spark-jobserver/spark-jobserver/blob/ea34a8f3e3c90af27aa87a165934d5eb4ea94dee/job-server-extras/test/spark.jobserver/NamedObjectsSpec.scala#L20

于 2016-10-01T04:46:50.943 回答