Spark 看不到 Hive 表,具体取决于您的运行方式

问题描述 投票:0回答:2

问题是,根据您运行 Spark 的方式,您是否可以看到 Hive 数据库。我接下来要做三个动作:

  1. 使用蜂巢

hive> show databases;

OK
default
mydb
sparkdb
Time taken: 0.041 seconds, Fetched: 3 row(s)
  1. 使用pyspark3 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脚本,spark3-submit --master=yarn script.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文件夹,第二种方法工作正常。

python database apache-spark hive spark-submit
2个回答
0
投票

您需要明确告诉 Spark 连接到 Hive。这是通过 SparkSession Builder 上的

enableHiveSupport
方法完成的。

所以使用以下方法初始化它就足够了:

spark = SparkSession.builder
          .master("yarn").appName("Test")
          .enableHiveSupport()
          .getOrCreate()

0
投票

你知道为什么加托·诺了吗?我也有类似的问题...

© www.soinside.com 2019 - 2024. All rights reserved.