【问题标题】:Connection from Databricks to Snowflake从 Databricks 到雪花的连接
【发布时间】:2019-01-23 21:33:23
【问题描述】:

使用 Databricks 笔记本,我可以从 Databricks 连接到“雪花”,并使用“scala”将内容写入雪花中的表,但使用“python”无法正常工作。

我在 Databricks 中添加了这两个库,这有助于在 Databricks 和 Snowflake 之间建立连接: snowflake-jdbc-3.6.8spark-snowflake_2.11-2.4.4-spark_2.2

我的目标是使用 Databricks(用于机器学习 - Spark)并在 Databricks 和 Snowflake 之间来回移动数据。

这是代码,我试图将 DataFrame 的内容写入雪花:

  1. 将数据加载到 DataFrame 中
    df1 = spark.read.format('csv').option("header", "true")\
               .option("inferSchema", "true")\
               .load("dbfs:/databricks-datasets/airlines/part-00000")
    display(df1)

我可以看到数据已加载到数据框中。

  1. 使用机密管理器获取 Snowflake 用户的登录名和密码。
    user = dbutils.secrets.get(scope="jdbc", key="snowflake_username")
    password = dbutils.secrets.get(scope="jdbc", key="snowflake_password")
  1. 雪花连接选项:
    options = dict(sfUrl="https://***snowflake_username***.snowflakecomputing.com",
                   sfUser=user,
                   sfPassword=password,
                   sfDatabase="my_database",
                   sfSchema="PUBLIC",
                   sfWarehouse="my_warehouse")

    SNOWFLAKE_SOURCE_NAME = "net.snowflake.spark.snowflake"

目前没有错误

  1. 将 DataFrame 的内容写入 Snowflake
    df1.write.format(SNOWFLAKE_SOURCE_NAME) \
        .options(**options) \
        .option("dbtable", "datafromspark") \
          .save()

导致:

**Error : 
java.sql.SQLException: No suitable driver found for jdbc:snowflake://https://*snowflake_username*.snowflakecomputing.com**

【问题讨论】:

    标签: jdbc databricks snowflake-cloud-data-platform


    【解决方案1】:

    我发现了错误:

    第 3 步无需提及"https://"

    sfUrl="https://snowflake_username.snowflakecomputing.com"   # giving an error
    
    sfUrl="snowflake_username.snowflakecomputing.com"          #works fine
    

    【讨论】:

    • sfUrl="snowflake_username.snowflakecomputing.com" 我尝试了以下可能性: 1. 从 sfUrl 中删除了“https://”并尝试使用 sfUrl="snowflake_username.snowflakecomputing.com" 2. 添加了“jdbc:snowflake " 并尝试为 sfUrl="jdbc:snowflake://snowflake_username.snowflakecomputing.com" 3. 删除 "https://" 并添加 "jdbc:snowflake" 并尝试使用 sfUrl="jdbc:snowflake://snowflake_username.snowflakecomputing.com " 在所有情况下,我都会遇到 ame 错误。
    • @Ktn Patel - 您能否分享整个代码 sn-p 尝试在 Python 和 SnowFlake 中做同样的事情?感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2019-06-18
    • 1970-01-01
    • 2020-03-23
    • 2021-07-22
    • 2018-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多