簡體   English   中英

Azure Databricks 密鑰名稱轉換為 jdbc 屬性

[英]Azure Databricks secret keys name into jdbc property

我剛剛創建了一個 Azure 密鑰庫支持的秘密 scope。 我的以下機密名稱(作為機密存儲在 Key Vault 中)連接到 Azure SQL 數據庫:

  1. jdb用戶名
  2. jdbc密碼

之后,我在數據塊中創建了秘密 scope。 這個秘密 scope 的名稱是 secretscopeadbr

In my notebook i have the following code: This code has the JDBC connection based my Azure SQL database and write data from a dataframe to a single table in my azure sql database.

from pyspark.sql import *
import pandas as pd

#Read the parquet file#
outerjoindfparquet = spark.read.format('parquet').load('dbfs:/newjouterjoindfparquet.parquet')
display (outerjoindfparquet)

#Write Parquet file to  Azure SQL Database#
mountdatabricksjdbcHostname = "sql-ja-dev.database.windows.net"
jdbcPort = "1433"
jdbcDatabase = "sqldb-ja-dev"
properties = {
        "user": "jdbcusername",
        "password": "jdbcpassword"
    }
url = "jdbc:sqlserver://{0}:{1};database={2}".format(mountdatabricksjdbcHostname, jdbcPort, jdbcDatabase)
filedf = sqlContext.read.parquet("dbfs:/newjouterjoindfparquet.parquet", header=True)

filedf1 = DataFrameWriter(filedf)
filedf1.jdbc(url=url, table="Fact_SalesOrder", mode="overwrite", properties=properties)

問題:無法識別屬性中插入的秘密值。

錯誤消息:com.microsoft.sqlserver.jdbc.SQLServerException:用戶“jdbcUsername”登錄失敗

有什么建議么? 非常感謝!

那是因為您在引號內留下了 jdbcusername 和 jdbcpassword。

嘗試這個。

properties = {
        "user": jdbcusername,
        "password": jdbcpassword
    }

我找到了解決方法:

我添加了兩個名為 JdbcUserName 和 JdbcPassword 的新變量。 這指向 dbutils.secrets.get

JdbcUserName= dbutils.secrets.get(scope = "myscope", key = "sqljadevadminloginname")
JdbcPassword= dbutils.secrets.get(scope = "myscope", key = "sqljadevpassword")
properties = {
        "user": JdbcUserName,
        "password": JdbcPassword
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM