问题描述
这是一个按预期工作的示例 DataBrick 笔记本段落:
import shapeless.tag
import shapeless.tag.@@
import org.apache.spark.sql.Dataset
trait FooTag
type Foo = Int @@ FooTag
val foo1: Foo = tag[FooTag][Int](1)
val foo2: Foo = tag[FooTag][Int](2)
val foo3: Foo = tag[FooTag][Int](3)
val foo4: Foo = tag[FooTag][Int](4)
case class Event(id: Int,foo: Foo)
val ds: Dataset[Event] = Seq((1,foo1),(2,foo2),(3,foo3),(4,foo4)).toDF("id","foo").as[Event]
display(ds)
如果我尝试完全相同的模式,但使用 String
而不是 Int
,并尝试运行它,我会收到此错误:
java.lang.classNotFoundException: 没有找到对应于
知道可能是什么问题吗?我该如何解决?我可以只使用原语作为标记类型的基础并与 Spark 兼容吗?
我使用的是 Spark 2.4.0、Scala 2.11.12 和 Shapeless 2.3.3。
这是相同的示例,但使用失败的 String
:
import shapeless.tag
import shapeless.tag.@@
import org.apache.spark.sql.Dataset
trait FooTag
type Foo = String @@ FooTag
val foo1: Foo = tag[FooTag][String]("1")
val foo2: Foo = tag[FooTag][String]("2")
val foo3: Foo = tag[FooTag][String]("3")
val foo4: Foo = tag[FooTag][String]("4")
case class Event(id: Int,"foo").as[Event]
display(ds)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)