无法在后续会话中读取持久化的 Spark 仓库数据库
Cannot read persisted spark warehouse databases on subsequent sessions
我正在尝试创建一个本地持久化的 spark 仓库数据库,该数据库将 present/loaded/accessible 供同一应用程序创建的未来 spark 会话使用。
我已经配置了 spark 会话 conf:
.config("spark.sql.warehouse.dir", "C:/path/to/my/long/lived/mock-hive")
当我创建数据库时,我看到创建了 mock-hive 文件夹,并且在我创建的两个不同的数据库下面有文件夹:db1.db
和 db2.db
但是,尽管数据库已成功创建并随后在支持它们的 运行 中查询,但会话完成后这些文件夹为空。
在随后的 运行 中配置相同的 spark 会话,如果我
baseSparkSession.catalog.listDatabases().collect()
我只看到 default
数据库。我创建的两个没有持续到第二个spark session。
让这些本地持久数据库在后续执行中可供读取的技巧是什么?
我注意到 spark.sql.warehouse.dir *.db 文件夹在创建后是空的,这可能与它有关...
Spark 版本:3.0.1
原来 spark.sql.warehouse.dir
不是存储本地数据库数据的地方...它在 metastore_db
中存储的 derby 数据库中。要重新定位它,您需要更改系统参数:
System.setProperty("derby.system.home", derbyPath)
我什至不必设置 spark.sql.warehouse.dir,只需将 derbyPath 重新定位到所有 spark 会话使用的公共位置即可。
注意 - 您不需要指定 derbyPath 的“metastore_db”部分,它将自动附加到该位置。
我正在尝试创建一个本地持久化的 spark 仓库数据库,该数据库将 present/loaded/accessible 供同一应用程序创建的未来 spark 会话使用。
我已经配置了 spark 会话 conf:
.config("spark.sql.warehouse.dir", "C:/path/to/my/long/lived/mock-hive")
当我创建数据库时,我看到创建了 mock-hive 文件夹,并且在我创建的两个不同的数据库下面有文件夹:db1.db
和 db2.db
但是,尽管数据库已成功创建并随后在支持它们的 运行 中查询,但会话完成后这些文件夹为空。
在随后的 运行 中配置相同的 spark 会话,如果我
baseSparkSession.catalog.listDatabases().collect()
我只看到 default
数据库。我创建的两个没有持续到第二个spark session。
让这些本地持久数据库在后续执行中可供读取的技巧是什么?
我注意到 spark.sql.warehouse.dir *.db 文件夹在创建后是空的,这可能与它有关...
Spark 版本:3.0.1
原来 spark.sql.warehouse.dir
不是存储本地数据库数据的地方...它在 metastore_db
中存储的 derby 数据库中。要重新定位它,您需要更改系统参数:
System.setProperty("derby.system.home", derbyPath)
我什至不必设置 spark.sql.warehouse.dir,只需将 derbyPath 重新定位到所有 spark 会话使用的公共位置即可。
注意 - 您不需要指定 derbyPath 的“metastore_db”部分,它将自动附加到该位置。