pyspark 从Synapse Analytics笔记本访问专用SQL池

wooyq4lh  于 2023-04-29  发布在  Spark
关注(0)|答案(1)|浏览(129)

我是synapse分析的新手,我想创建一个笔记本,它可以进一步用作管道中的数据库,以便处理来自DB的其中一个表中的数据。
我想在PySpark中做所有的事情,所以我想知道如何使用notebook从现有的DB中读取数据。**注意:**我不想使用该方法,在该方法中,我提到了我的密码等。

spark = SparkSession.builder.appName("SynapseAnalyticsDemo").getOrCreate()

# Set up Synapse Analytics credentials
synapse_servername = "<synapse_servername>.sql.azuresynapse.net"
synapse_database = "<synapse_database>"
synapse_username = "<synapse_username>"
synapse_password = "<synapse_password>"
synapse_jdbc_url = f"jdbc:sqlserver://{synapse_servername}:1433;database={synapse_database};user={synapse_username};password={synapse_password}"

# Define the SQL query and table name
table_name = "<sql_pool_table>"
query = f"SELECT * FROM {table_name} WHERE some_column = 'some_value'"

这是我找到的唯一方法,但考虑到许多人将能够看到databrick(笔记本),我不想使用这种方法,在那里我必须提到密码。
我也试过这个方法,但不管用:

%%pyspark
df=spark.sql ("select * from TableName")
df.show()

在第二种方法中,我已经完全按照SQL Server Management Studio中的格式编写了Table Name,然后我尝试使用Azure Synapse专用的SQL池名称,但它们都不起作用。
如何使用Notebook(PySpark)访问Azure Synapse专用SQL池?

w8f9ii69

w8f9ii691#

你可以通过在Azure密钥库中存储密码来访问Azure Synapse Notebook中的专用SQL池数据,而无需提及密码。对于创建Azure密钥保管库,并使用数据库密码创建密钥。
使用以下代码检索秘密值:

from notebookutils import mssparkutils
mssparkutils.credentials.getSecret('AzureKeyvaultName', 'secretName')

使用以下代码访问专用SQL数据库:

from notebookutils import mssparkutils

jdbcHostname = "synpool.database.windows.net"

jdbcPort = 1433

jdbcDatabase = "dedsql"

jdbcUsername = "sqladminuser"

jdbcPassword = mssparkutils.credentials.getSecret('sqlservercred', 'sqlpassword')

jdbcDriver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"

#url = s"jdbc:sqlserver://${database_host}:${database_port}/${database_name}"

table = "students"

jdbcUrl = f“jdbc:sqlserver://{jdbcHostname}:{jdbcPort};databaseName={jdbcDatabase}”
df 1 =Spark。read.format(“jdbc”).option(“driver”,jdbcDriver).option(“url”,jdbcUrl)。选项(“dbtable”,table)。option(“user”,jdbcUsername)。option(“password”,jdbcPassword).load()

df1.show()

相关问题