簡體   English   中英

沒有 TypeTag 可用於案例 class 使用 scala 3 和火花 3

[英]No TypeTag available for a case class using scala 3 with spark 3

我的代碼使用 scala 3 運行火花作業

@main def startDatasetJob(): Unit =
  val spark = SparkSession.builder()
    .appName("Datasets")
    .master("local[*]")
    .getOrCreate()

  case class CarRow(Name: String,
                 Miles_per_Gallon: Double,
                 Cylinders: Long,
                 Displacement: Double,
                 Horsepower: Long,
                 Weight_in_lbs: Long,
                 Acceleration: Double,
                 Year: Date,
                 Origin: String
                )

  implicit val carEncoder: Encoder[CarRow] = Encoders.product[CarRow]
  val carsDF = spark.read
    .format("json")
    .option("inferSchema", "true")
    .load("src/main/resources/data/cars.json")

  val carDS = carsDF.as[CarRow]

但收到錯誤消息

No TypeTag available for CarRow
  implicit val carEncoder: Encoder[CarRow] = Encoders.product[CarRow]

有點困惑為什么編譯器似乎無法加載案例 class,如果有人可以提供幫助

Spark 的編碼器推導依賴於 Scala 2.x 機制,其中一些已不存在。

你試過spark-scala3嗎? 它為 Scala 3 提供編碼器推導。

libraryDependencies += "io.github.vincenzobaz" %% "spark-scala3" % "0.1.3"

然后

import scala3encoders.given

(請參閱 repo 中的示例)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM