问题是,取决于你如何运行Spark,你能不能看到Hive数据库。
1.使用配置单元
hive> show databases;
OK
default
mydb
sparkdb
Time taken: 0.041 seconds, Fetched: 3 row(s)
1.使用pyspark 3 shell
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|
+---------+
1.使用pyspark脚本,spark 3-提交--master=Yarnscript.py
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文件夹,第二种方法工作正常。
1条答案
按热度按时间plicqrtu1#
您需要显式地告诉Spark连接到Hive,这是通过SparkSession Builder上的
enableHiveSupport
方法完成的。因此,使用以下语句初始化它就足够了: