通过okta身份验证使用databricks snowflake连接器连接到snowflake

mhd8tkvw  于 2021-05-29  发布在  Spark
关注(0)|答案(1)|浏览(584)

我试图连接到雪花从databricks使用Spark连接器在这里提到。在示例中,使用snowflake帐户的用户名和密码建立连接。然而,在我的情况下,我是通过okta认证。我可以看到有一个okta身份验证选项可以使用python连接器进行连接。然而,我找不到同样的SparkDataframe。
同样对于生产管道部署,是否建议使用okta身份验证?
有没有人有过类似的用例或者知道这个设置?我们将非常感谢你的帮助。
谢谢,苏里亚

icomxhvb

icomxhvb1#

snowflake的spark连接器使用jdbc驱动程序建立到snowflake的连接,因此snowflake的连接性参数也适用于spark连接器。
jdbc驱动程序有“authenticator=externalbrowser”参数来启用sso/联合身份验证。您还可以将此参数设置为okta端点以进行本机okta身份验证。
下面的代码片段演示了如何在利用雪花Spark连接器的简单pyspark程序中添加此设置。请注意,您确实需要设置用户和密码,因为这些是必需的参数。如果需要,可以将这些值设置为伪值。

from pyspark import SparkConf, SparkContext
from pyspark.sql import SQLContext
from pyspark.sql.types import *
from pyspark import SparkConf, SparkContext

sc = SparkContext("local", "Simple App")
spark = SQLContext(sc)
spark_conf = SparkConf().setMaster('local').setAppName('repro')

sfOptions = {
 "sfURL" : "accountname.eu-central-1.snowflakecomputing.com",
 "sfAccount" : "accountname",
 "sfUser" : "manuel",
 "authenticator" : "externalbrowser",
 "sfPassword" : "xxx",
 "sfDatabase" : "SANDBOX",
 "sfSchema" : "PUBLIC",
 "sfWarehouse" : "MANUEL_WH",
 "tracing" : "ALL",
}

SNOWFLAKE_SOURCE_NAME = "net.snowflake.spark.snowflake"

df = spark.read.format(SNOWFLAKE_SOURCE_NAME) \
   .options(**sfOptions) \
   .option("query",  "select 1 as my_num union all select 2 as my_num") \
   .load()

相关问题