【问题标题】:Create Spark context from Python in order to run databricks sql从 Python 创建 Spark 上下文以运行 databricks sql
【发布时间】:2021-11-29 07:34:13
【问题描述】:

我一直在关注这个tutorial,它让我可以从 Python 连接到 Databricks,然后运行增量表查询。但是,我偶然发现了一个问题。当我第一次运行它时,我收到以下错误:

帐户中的容器容器名称 找不到 storage-account.blob.core.windows.net,我们无法创建 它使用匿名凭据,并且在 配置。

当我回到我的 Databricks 集群并运行这段代码 sn-p

from pyspark import SparkContext
spark_context =SparkContext.getOrCreate()

if StorageAccountName is not None and StorageAccountAccessKey is not None:
  print('Configuring the spark context...')
  spark_context._jsc.hadoopConfiguration().set(
    f"fs.azure.account.key.{StorageAccountName}.blob.core.windows.net",
    StorageAccountAccessKey)

(其中StorageAccountNameAccessKey 是已知的)然后再次运行我的Python 应用程序,它成功运行而不会抛出之前的错误。我想问一下,有没有办法从我的 Python 应用程序运行这段代码 sn-p 并同时反映在我的 Databricks 集群上?

【问题讨论】:

  • 您是通过 Databrics Connect 运行此代码,还是直接在集群上运行?
  • 代码sn-p直接在集群上。我怎么能从我的 PyCharm 运行它? @AlexOtt

标签: python apache-spark azure-databricks databricks-connect databricks-sql


【解决方案1】:

您只需将这些配置选项添加到集群本身,如docs 中所述。您需要设置以下 Spark 属性,与您在代码中所做的一样:

fs.azure.account.key.<storage-account-name>.blob.core.windows.net <storage-account-access-key>

为了安全起见,最好将访问密钥放入秘密范围,并从 Spark 配置中引用它(参见docs

【讨论】:

  • 这应该通过databricks-connect 或只是pyspark
  • 应该在你查询的集群上完成
  • 直接在数据块上?抱歉,如果这个问题看起来有点愚蠢,我是数据块的新手
  • 是的,进入你的集群,点击编辑,向下滚动到“高级选项”,将该配置放入“Spark”部分
  • 是的。此选项为集群提供了向存储帐户进行身份验证的方式。但我建议使用 SAS 密钥而不是存储密钥
猜你喜欢
  • 2021-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-17
  • 1970-01-01
  • 2020-01-13
  • 2022-07-06
  • 1970-01-01
相关资源
最近更新 更多