【发布时间】:2020-09-23 16:06:17
【问题描述】:
我是 Scala 新手,仍在学习大部分功能。 我正在尝试将 Dataset[T] 转换为 Json。 我正在使用 json play 来创建隐式写入。 加载数据集时,类型参数工作正常:
def processEvent[T](spark: SparkSession, inputPath: String)(implicit encoder: Encoder[T]): Unit = {
val ds = spark.read.parquet(inputPath).as[T]
ds.collect().foreach { event =>
val serializedEvent = eventToJson[T](spark, event)
postEvent(serializedEvent)
}
}
但在调用EventToJson 时,我收到错误:No Json serializer found for type T. Try to implement an implicit Writes or Format for this type.
def eventToJson[T](spark: SparkSession, event: T): String = {
Json.toJson(event).toString()
}
当我用我的案例类之一替换参数化类型时,代码可以正常工作:
def eventToJson(spark: SparkSession, event: MyCaseClass): String = {
Json.toJson(event).toString()
}
为什么参数化类型找不到对应的case类和隐式Writes?
【问题讨论】:
-
我会推荐阅读一些关于Scala implicitPlay JSON的教程
-
@DesireeCox 我的回答对你有用吗?