org.apache.hadoop.fs.RawLocalFileSystem$DeprecatedRawLocalFileStatus 无法转换为 org.apache.spark.sql.execution.datasources.FileStatusWithMetadat

问题描述 投票:0回答:1

使用 scalaspark 创建增量表时出现以下错误。 _delta_log 正在仓库中创建,但在 _delta_log 创建后出现此错误

线程“main”中的异常 java.lang.ClassCastException:类 org.apache.hadoop.fs.RawLocalFileSystem$DeprecatedRawLocalFileStatus 无法转换为类 org.apache.spark.sql.execution.datasources.FileStatusWithMetadata (org.apache.hadoop. fs.RawLocalFileSystem$DeprecatedRawLocalFileStatus 和 org.apache.spark.sql.execution.datasources.FileStatusWithMetadata 位于加载程序“app”的未命名模块中)

构建.sbt

//Using JDK 20

import sbt.project

ThisBuild / version := "0.1.0-SNAPSHOT"

ThisBuild / scalaVersion := "2.12.4"

lazy val root = (project in file("."))
  .settings(
    name := "scala-spark-app2",
    idePackagePrefix := Some("com.scalaspark.app2"),
  )

libraryDependencies += "org.apache.spark" %% "spark-core" % "3.5.0"
libraryDependencies += "org.apache.spark" %% "spark-sql" % "3.5.0"
libraryDependencies += "io.delta" %% "delta-core" % "2.4.0"

主.scala

package com.scalaspark.app2

import org.apache.spark.sql.{Row, SparkSession}

object Main {
  def main(args: Array[String]): Unit = {
    val warehouseDir = "/Users/usr1/app2/scala-spark-app2/data_files/"
    val spark = SparkSession.builder()
      .appName("DeltaTableDetails")
      .config("spark.master", "local")
      .config("spark.sql.extensions", "io.delta.sql.DeltaSparkSessionExtension")
      .config("spark.sql.catalog.spark_catalog", "org.apache.spark.sql.delta.catalog.DeltaCatalog")
      .config("spark.sql.warehouse.dir", warehouseDir)
      .getOrCreate()

    var query = "CREATE TABLE IF NOT EXISTS T1 (id bigint, data string) USING delta LOCATION '/Users/usr1/scala-spark-app2/data_files/T1'"
    spark.sql(query)
    query = "INSERT INTO T1 VALUES(10,'VAL1')"
    spark.sql(query)
  }
}

尝试更改 scala 、spark 和 delta 的版本,但没有成功。使用 JDK 20 版本。

java scala apache-spark delta-lake scala-spark
1个回答
0
投票

所以目前支持的最高 Java 版本是 Java 17。请确保使用此版本。

我个人使用 Spark:3.5.1,它只适用于 delta-spark:3.1.0,我在 delta-core:2.4.0 中遇到了类似的错误。

信息:自 3.0.0 版本起,delta-core 已重命名为 delta-spark。

以下是我使用和正在运行的版本:

  • Spark==3.5.1
  • Hadoop==3.3.4
  • Java==17.0.10
  • Scala==2.12.18
  • spark-delta==2.12_3.1.0

希望有帮助。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.