没有 hive 的 Spark - 无法读取现有表

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

我有一个简单的 pyspark 设置,其中有本地 master,但没有安装 hive。

我创建一个像这样的 SparkSession:

from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
spark.conf.set("spark.sql.legacy.createHiveTableByDefault", False)

接下来我创建一个表:

spark.createDataFrame([('Alice', 1)], ['name', 'age']).writeTo("test").create()

这会在

test
内生成一个文件夹
spark-warehouse
,其中包含镶木地板文件。

当我稍后以相同的方式启动一个新的 SparkSession 时,这不会读取该文件夹。

它否认任何表存在:

spark.catalog.listTables()
给出
[]

还有

spark.sql("select * from test")

结果为 TABLE_OR_VIEW_NOT_FOUND。

如何才能将表加载到新的 Spark 会话中的目录中?

apache-spark pyspark
1个回答
0
投票

感谢@mazaneicha 为我指明了正确的方向。

我创建了一个 hive-site.xml:

<property>
  <name>hive.metastore.local</name>
  <value>true</value>
</property>

现在我在 Hive 支持下创建 Spark 会话:

spark = SparkSession.builder.enableHiveSupport().getOrCreate()

这有效!

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