【发布时间】:2016-08-19 11:02:54
【问题描述】:
我在本地机器上运行 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 没有得到正确的配置?我该如何解决?谢谢!
【问题讨论】:
-
深思熟虑...上下文是事先创建的,因为它无法更改...
标签: hadoop apache-spark