在 Databricks dbx 的作业集群中将 spark.sql 作为作业的一部分运行

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

有人知道如何在作业集群中的 dbx 中的 Python 脚本中运行 spark.sql 命令吗?我的代码以某种方式在个人计算集群上运行,但在作业集群上失败。我猜这是 JDBC 设置,但似乎无法在作业集群上指定 JDBC 设置。

以下是我尝试执行的 SQL 命令。我按照 dbx 中规定的 OOP 格式进行操作。该位置是安装到 DBFS 的 Azure Blob 存储中的随机位置。

我试图在 Pyspark 中编写一个 Spark Dataframe 以插入到 Delta 表中。

self.spark.sql(
f"""
CREATE SCHEMA IF NOT EXISTS solis
LOCATION '{self.metadata_db_path}'
"""
)

self.spark.sql(
f"""
CREATE TABLE IF NOT EXISTS solis.metadata (
   imagekey STRING, StdImgDate STRING, StdImgView STRING,
   StdProdID STRING, StdVisit STRING, Study STRING, RowKey STRING, 
   ProcessedTimestamp LONG
) USING DELTA LOCATION '{self.metadata_db_path}'
PARTITIONED BY (Study)
"""

但是它能够创建模式但无法创建表。它不断产生以下错误。

AzureBlobFileSystemStore: Received exception while listing a directory.
Operation failed: "The specified path does not exist.", 404

我认为这是 JDBC 设置,因为我能够使用

dbx execute
在交互式集群上执行它,但它总是在作业集群上失败。

enter image description here

那么我如何才能在作业集群中运行 SQL 查询?

python-3.x databricks databricks-sql
© www.soinside.com 2019 - 2024. All rights reserved.