【发布时间】:2022-08-03 15:55:06
【问题描述】:
我在 Azure Synapse 笔记本中运行并尝试使用 PySpark 读取 SQL 表。好像可以读取表,但是当我想显示结果时,我得到一个错误,表明它无法访问临时目录。
如果我使用 \"wasbs\" 模式指定临时目录,我会收到以下错误:
由于内部错误,外部文件访问失败:\'为连接到 Azure 存储帐户而提供的参数无效。
如果我使用 abfss 架构指定临时目录,则会收到以下错误:
CREATE EXTERNAL TABLE AS SELECT 语句失败,因为路径名 \'abfss://@.dfs.core.windows.net/temp/SQLAnalyticsConnectorStaging/...tbl\' 无法用于导出。请确保指定的路径是一个存在或可以创建的目录,并且该目录下可以创建文件.
容器名称、帐户名称和帐户密钥是正确的,所以我猜我没有正确设置配置,但我已经尝试了所有我能想到的。
我还通过将 \"fs.azure.account.key\" 替换为 \"spark.hadoop.fs.azure.account.key\" 来设置 \"hadoop\" 配置。
代码示例如下。我认为它可以成功访问数据库,因为我可以使用 print (\"columns\", df.columns) 显示列。当我尝试使用 print (\"head\", df.head()) 显示数据时出现错误
任何帮助表示赞赏。
from pyspark.sql import SparkSession
container = \"container_name\"
storage_account_name = \"storage_account_name\"
account_key = \"account_key\"
appName = \"test\"
master = \"local\"
spark = SparkSession.builder \\
.appName(appName) \\
.master(master) \\
.getOrCreate()
spark.conf.set(f\"fs.azure.account.key.{storage_account_name}.blob.core.windows.net\", account_key)
df = spark.read \\
.option(Constants.TEMP_FOLDER, f\"wasbs://{container}@{storage_account_name}.blob.core.windows.net/temp\") \\
.synapsesql(\"db_name.schema_name..spark_test\")
print (\"columns\", df.columns)
print (\"head\", df.head())
标签: python azure pyspark azure-blob-storage azure-synapse