【问题标题】:Pyspark error accessing temp storage dir in Azure Blob访问 Azure Blob 中的临时存储目录时出现 Pyspark 错误
【发布时间】: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


    【解决方案1】:

    不能用于出口。请确保指定的路径是一个存在或可以创建的目录,并且该目录下可以创建文件.

    PolyBase 无法执行该操作,从而导致此错误。

    原因:

    • 尝试访问必要网络端口上的 Azure Blob 存储时遇到网络错误。
    • 配置 Azure 存储帐户。

    解析度:

    • 启用从 CTL01 节点通过提供的 Internet 连接到本地防火墙上的 *.blob.core.windows.net 的出站流量ports 80 and 443.
    • 使用以下任一方法验证存储帐户是否设置为标准存储帐户standard locally redundant storage (Standard-LRS) or standard geo-redundant storage (Standard-GRS)并配置帐户General Purpose.

    【讨论】:

      猜你喜欢
      • 2013-04-08
      • 2022-01-13
      • 2022-07-05
      • 2020-01-06
      • 1970-01-01
      • 1970-01-01
      • 2020-09-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多