我有一个简单的 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 会话中的目录中?
感谢@mazaneicha 为我指明了正确的方向。
我创建了一个 hive-site.xml:
<property>
<name>hive.metastore.local</name>
<value>true</value>
</property>
现在我在 Hive 支持下创建 Spark 会话:
spark = SparkSession.builder.enableHiveSupport().getOrCreate()
这有效!