在spark上运行配置单元支持时出现异常:无法使用配置单元支持示例化sparksession,因为找不到配置单元类

lbsnaicq  于 2021-05-27  发布在  Spark
关注(0)|答案(2)|浏览(510)

你好,我正在尝试使用与Spark配置单元,但当我尝试执行,它显示了这个错误

  1. Exception in thread "main" java.lang.IllegalArgumentException: Unable to instantiate SparkSession with Hive support because Hive classes are not found.

这是我的源代码

  1. package com.spark.hiveconnect
  2. import java.io.File
  3. import org.apache.spark.sql.{Row, SaveMode, SparkSession}
  4. object sourceToHIve {
  5. case class Record(key: Int, value: String)
  6. def main(args: Array[String]){
  7. val warehouseLocation = new File("spark-warehouse").getAbsolutePath
  8. val spark = SparkSession
  9. .builder()
  10. .appName("Spark Hive Example")
  11. .config("spark.sql.warehouse.dir", warehouseLocation)
  12. .enableHiveSupport()
  13. .getOrCreate()
  14. import spark.implicits._
  15. import spark.sql
  16. sql("CREATE TABLE IF NOT EXISTS src (key INT, value STRING) USING hive")
  17. sql("LOAD DATA LOCAL INPATH '/usr/local/spark3/examples/src/main/resources/kv1.txt' INTO TABLE src")
  18. sql("SELECT * FROM src").show()
  19. spark.close()
  20. }
  21. }

这是我的build.sbt文件。

  1. name := "SparkHive"
  2. version := "0.1"
  3. scalaVersion := "2.12.10"
  4. libraryDependencies += "org.apache.spark" %% "spark-core" % "2.4.5"
  5. // https://mvnrepository.com/artifact/org.apache.spark/spark-sql
  6. libraryDependencies += "org.apache.spark" %% "spark-sql" % "2.4.5"

我也有Hive运行在控制台。有人能帮我吗?谢谢您。

mtb9vblg

mtb9vblg1#

主要问题是无法加载类“org.apache.hadoop.hive.conf.hiveconf”。您可以插入以下代码进行测试。

  1. Class.forName("org.apache.hadoop.hive.conf.HiveConf",true,
  2. Thread.currentThread().getContextClassLoader);

这一行会出错。
确切地说,根本的问题是你的pom可能不支持Hive星火。您可以检查以下依赖项。

  1. <dependency>
  2. <groupId>org.apache.spark</groupId>
  3. <artifactId>spark-hive_2.11</artifactId>
  4. <version>2.4.3</version>
  5. </dependency>

类“org.apache.hadoop.hive.conf.hiveconf”位于这个依赖关系中。

2ic8powd

2ic8powd2#

尝试添加

  1. libraryDependencies += "org.apache.spark" %% "spark-hive" % "2.4.5"

相关问题