首页 > 解决方案 > 如何在 python 中使用雪花连接创建 Spark 数据框?

问题描述

我是 Spark 和 Python 的新手,我有一个存储在 python 变量中的 sql,我们使用 SnowFlake 数据库。如何使用带有雪花连接的 SQL 创建火花数据?

    import sf_connectivity (we have a code for establishing connection with Snowflake database)
    emp = 'Select * From Employee'
    snowflake_connection = sf_connectivity.collector() (It is a method to establish snowflake conenction)
    requirement 1: Create Spark Dataframe (sf_df) using 'emp' and 'snowflake_connection '
    requirement 2: sf_df.createOrReplaceTempView(Temp_Employee)

它需要什么包或库?我怎样才能使这项工作?

标签: dataframeapache-sparkpysparkapache-spark-sqlsnowflake-cloud-data-platform

解决方案


帮助我解决这个问题的文档在这里:https ://docs.databricks.com/data/data-sources/snowflake.html

我花了一段时间才弄清楚如何让它工作!在问了很多问题之后,我让我公司的 IT 部门配置了一个带有私钥/公钥身份验证的雪花用户帐户,他们将该 ID 配置为可在我们的公司 Databricks 帐户中访问。

在他们设置好之后,以下代码是一个示例,如何将 sql 命令作为变量传递给 Spark,并让 Spark 将其转换为数据帧。

optionsSource = dict(sfUrl="mycompany.east-us-2.azure.snowflakecomputing.com", # Snowflake Account Name
                          sfUser="my_service_acct",
                          pem_private_key=dbutils.secrets.get("my_scope", "my_secret"),
                   sfDatabase="mydatabase", # Snowflake Database
                   sfSchema="myschema", # Snowflake Schema
                   sfWarehouse="mywarehouse",
                   sfRole="myrole"
                        )   

    sqlcmd = '''
    select current_date;
    '''

    df = spark.read.format("snowflake").options(**optionsSource).option("query", sqlcmd).load()
    display(df)

推荐阅读