是否可以将数据从 ADLS 加载到 DBX 中的 SQL DW?
Posted
技术标签:
【中文标题】是否可以将数据从 ADLS 加载到 DBX 中的 SQL DW?【英文标题】:Is it possible to load data from ADLS to SQL DW in DBX? 【发布时间】:2021-12-08 15:57:01 【问题描述】:是否可以使用数据块将数据从 ADLS gen2 加载到 SQL DW? 我在 ADLS Gen2 中保存了表,我想将表从那里传输到 SQL DW。 如果可以,我该怎么做?
谢谢
【问题讨论】:
SQL DW 是指 Synapse 吗?是的。但使用 Azure 数据工厂可能会更容易。我认为您可以挂载 ADLS 并将文件作为数据框打开吗?如果没有,请先这样做。然后您可以使用此示例将数据帧写入 SQL Server docs.microsoft.com/en-us/sql/connect/spark/… 【参考方案1】:首先在数据块上安装 ADLS。为此,请遵循以下代码 sn-p
configs = "fs.azure.account.auth.type": "OAuth",
"fs.azure.account.oauth.provider.type": "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider",
"fs.azure.account.oauth2.client.id": "<application-id>",
"fs.azure.account.oauth2.client.secret": dbutils.secrets.get(scope="<scope-name>",key="<service-credential-key-name>"),
"fs.azure.account.oauth2.client.endpoint": "https://login.microsoftonline.com/<directory-id>/oauth2/token"
# Optionally, you can add <directory-name> to the source URI of your mount point.
dbutils.fs.mount(
source = "abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/",
mount_point = "/mnt/<mount-name>",
extra_configs = configs)
你可以关注这个link
现在将存储在 ADLS 中的表转换为数据框。在这里您可以使用数据进行转换。
最后一步是将dataframe中的数据存储到SQL DW。
使用以下代码建立连接。
jdbcHostname = "xxxxxxxxxxxx.database.windows.net"
jdbcPort = "1433"
jdbcDatabase = "xxxxxxxxdb"
properties =
"user" : "xxxxxxxx",
"password" : "******"
下面我展示了如何将数据加载到 sql。
from pyspark.sql import *
import pandas as pd
df = DataFrameWriter(mydf)
df.jdbc(url=url, table= "Table_Name", mode ="overwrite", properties = properties)
有关更多信息,您可以参考 Gauri Mahajan 的 article
【讨论】:
以上是关于是否可以将数据从 ADLS 加载到 DBX 中的 SQL DW?的主要内容,如果未能解决你的问题,请参考以下文章
将数据从 ADLS Gen2 加载到 Azure Synapse 时出错
使用 Python 或 Java 从本地将数据上传到 Azure ADLS Gen2
Azure 数据湖:将数据从 Blob 移动到 ADLS 时面临问题