VSCode 扩展 Databricks-Connect - 使用 SparkSession

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

我正在使用 Databricks VSCode 扩展在 IDE 中进行开发。基本功能都运行良好。我连接到启用了 Unity Catalog 的 Azure Databricks 工作区,选择了活动集群 (DBR 13.2) 并配置了同步目标。我能够执行代码。 现在我想使用 Databricks Connect“V2”在本地运行我的代码。

我有以下代码:

from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()

但是,当我运行此程序时,出现以下错误:

RuntimeError: Only remote Spark sessions using Databricks Connect are supported. Could not find connection parameters to start a Spark remote session.

我错过了什么吗?我使用 AZ CLI 进行了一次身份验证,使用 PAT 进行了一次身份验证。我也在 DBR 13.2 和 13.3 上尝试过,但所有选项都失败了。

谢谢!

apache-spark visual-studio-code databricks databricks-connect databricks-vscode-extension
3个回答
3
投票

对于遇到此错误并且不希望使用 databricks.connect 执行代码的任何人,您必须完全卸载扩展和包。我还推荐 pip purge 缓存。然后您可以重新安装该软件包,它应该停止尝试使用 databricks.connect。


2
投票

好的,通过导出 SPARK_REMOTE 工作所需的

spark = SparkSession.builder.getOrCreate()
环境变量,该问题已在扩展
版本 1.1.1
中得到解决。

但请注意,它仅在您配置基于配置文件的身份验证时才起作用,不适用于

azure-cli
或 OAuth 身份验证 - 要使它们起作用,您需要实例化可以使用
DatabricksSession
 导入的 
from databricks.connect import DatabricksSession

实例

0
投票

请使用这个:

from databricks.connect import DatabricksSession
from databricks.sdk.core import Config

config = Config(
  host       = dbs_host,
  token      = access_token,
  cluster_id = cluster_id,
)

spark = DatabricksSession.builder.sdkConfig(config).getOrCreate()

def write_to_delta(df, table_name):
    spark_df = spark.createDataFrame(df)
    spark_df.write.mode("append").insertInto(table_name)



if __name__ == '__main__':
    df = pd.DataFrame()
    write_to_delta(df, 'your target table')

    print("\nDone!\n")




配置 databrickscfg 并在 shell 中运行它(如果它不起作用):

databricks auth env --profile /root/.databrickscfg

© www.soinside.com 2019 - 2024. All rights reserved.