问题是,根据您运行 Spark 的方式,您是否可以看到 Hive 数据库。我接下来要做三个动作:
hive> show databases;
OK
default
mydb
sparkdb
Time taken: 0.041 seconds, Fetched: 3 row(s)
Using Python version 3.6.9 (default, Feb 28 2023 09:55:20)
Spark context Web UI available at http://training.us-west4-b.c.ace-sight-379210.internal:4040
Spark context available as 'sc' (master = yarn, app id = application_1678451025755_0002).
SparkSession available as 'spark'.
>>> spark.sql(""" show databases; """)
23/03/10 12:24:55 WARN HiveConf: HiveConf of name hive.stats.jdbc.timeout does not exist
23/03/10 12:24:55 WARN HiveConf: HiveConf of name hive.stats.retries.wait does not exist
+---------+
|namespace|
+---------+
| default|
| mydb|
| sparkdb|
+---------+
from pyspark.sql import SparkSession
spark = SparkSession.builder.master("yarn").appName("Test").getOrCreate()
print(spark.sql(""" show databases """))
输出为
+---------+
|namespace|
+---------+
| default|
+---------+
谁能解释一下第三种方法有什么问题吗?它没有显示所有表格。文件hive-site.xml被复制到spark/conf文件夹,第二种方法工作正常。
您需要明确告诉 Spark 连接到 Hive。这是通过 SparkSession Builder 上的
enableHiveSupport
方法完成的。
所以使用以下方法初始化它就足够了:
spark = SparkSession.builder
.master("yarn").appName("Test")
.enableHiveSupport()
.getOrCreate()
你知道为什么加托·诺了吗?我也有类似的问题...