gpt4 book ai didi

hadoop - sparkSession/sparkContext 获取不到hadoop配置

转载 作者:可可西里 更新时间:2023-11-01 14:15:03 26 4
gpt4 key购买 nike

我在本地机器上运行 spark 2、hive、hadoop,我想使用 spark sql 从 hive 表中读取数据。

当我在默认 hdfs://localhost:9000 下运行 hadoop 时一切正常,但如果我在 core-site.xml 中更改为不同的端口:

<name>fs.defaultFS</name>
<value>hdfs://localhost:9099</value>

在 spark-shell 中运行一个简单的 sql spark.sql("select * from archive.tcsv3 limit 100").show(); 会给我错误:

ERROR metastore.RetryingHMSHandler: AlreadyExistsException(message:Database default already exists)
.....
From local/147.214.109.160 to localhost:9000 failed on connection exception: java.net.ConnectException: Connection refused;
.....

我之前得到了AlreadyExistsException,这似乎并不影响结果。

我可以通过创建一个新的 sparkContext 让它工作:

import org.apache.spark.SparkContext
import org.apache.spark.sql.SparkSession
sc.stop()
var sc = new SparkContext()
val session = SparkSession.builder().master("local").appName("test").enableHiveSupport().getOrCreate()
session.sql("show tables").show()

我的问题是,为什么初始的sparkSession/sparkContext没有得到正确的配置?我该如何解决?谢谢!

最佳答案

如果您正在使用 SparkSession 并且您想要在 spark 上下文上设置配置,那么请使用 session.sparkContext

val session = SparkSession
.builder()
.appName("test")
.enableHiveSupport()
.getOrCreate()
import session.implicits._

session.sparkContext.hadoopConfiguration.set("fs.s3.impl", "org.apache.hadoop.fs.s3native.NativeS3FileSystem")

您不需要导入 SparkContext 或在 SparkSession 之前创建它

关于hadoop - sparkSession/sparkContext 获取不到hadoop配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39037428/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com