Python 通过Okta身份验证,使用Databricks Snowflake连接器连接到Snowflake

Python 通过Okta身份验证,使用Databricks Snowflake连接器连接到Snowflake,python,apache-spark,pyspark,databricks,snowflake-cloud-data-platform,Python,Apache Spark,Pyspark,Databricks,Snowflake Cloud Data Platform,我正试图连接到雪花从Databricks使用火花连接器如前所述。在示例中,使用Snowflake帐户的用户名和密码建立连接。然而,就我而言,我正在通过Okta进行身份验证。我可以看到有一个选项Okta认证连接使用。但是,对于Spark dataframe,我找不到相同的 对于生产管道部署,是否建议使用Okta身份验证 有没有人曾经有过类似的用例或者知道这个设置?我们将非常感谢你的帮助 谢谢, SuryaSnowflake的Spark连接器使用JDBC驱动程序建立与Snowflake的连接,因此S

我正试图连接到雪花从Databricks使用火花连接器如前所述。在示例中,使用Snowflake帐户的用户名和密码建立连接。然而,就我而言,我正在通过Okta进行身份验证。我可以看到有一个选项Okta认证连接使用。但是,对于Spark dataframe,我找不到相同的

对于生产管道部署,是否建议使用Okta身份验证

有没有人曾经有过类似的用例或者知道这个设置?我们将非常感谢你的帮助

谢谢,
Surya

Snowflake的Spark连接器使用JDBC驱动程序建立与Snowflake的连接,因此Snowflake的连接参数也适用于Spark连接器

用于启用SSO/联合身份验证的参数。您还可以将此参数设置为Okta端点以进行本机Okta身份验证

下面的代码片段演示如何在利用雪花火花连接器的简单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()

Snowflake的Spark连接器使用JDBC驱动程序建立与Snowflake的连接,因此Snowflake的连接参数也适用于Spark连接器

用于启用SSO/联合身份验证的参数。您还可以将此参数设置为Okta端点以进行本机Okta身份验证

下面的代码片段演示如何在利用雪花火花连接器的简单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()