无法使用azure databricks在azure sql中加载数据

问题描述 投票:0回答:2

我是azure databricks的新手。我在scala中编写了一个示例spark程序,通过下面的查询加载azure sql。我收到了一个错误。有人可以帮我这个

错误信息 - - com.microsoft.sqlserver.jdbc.SQLServerException:与主机b63da5ce2d2d.tr27.northeurope1-a.worker.database.windows.net,端口65535的TCP / IP连接失败。错误:“连接超时。验证连接属性。确保主机上正在运行SQL Server实例并接受端口上的TCP / IP连接。确保防火墙不阻止与端口的TCP连接。 “

Scala代码 -

import com.microsoft.azure.sqldb.spark.config.Configimportcom.microsoft.azure.sqldb.spark.connect ._ //获取DataFrame集合(val集合)valconfig = Config(Map(“url” - >“mysqlserver。 database.windows.net”, “的databaseName” - > “MyDatabase的”, “DBTABLE” - > “dbo.Clients”, “用户” - > “用户名”, “口令” - > “XXXXXXXX”))importorg.apache.spark .sql.SaveModecollection.write.mode(SaveMode.Append).sqlDB(配置)

azure-sql-database azure-data-factory azure-data-factory-2 azure-databricks
2个回答
0
投票

听起来你在SQL DB上启用了防火墙。首先尝试禁用它以确认问题。

如果它有效,那么如果要启用防火墙,则有两种选择:

1)vnet将您的databricks和sqldb附加到同一个vnet。 https://docs.azuredatabricks.net/administration-guide/cloud-configurations/azure/vnet-inject.html

2)在sqldb上列出您所在位置的所有azure ips。这些都可以下载。请注意,某些位置超过128,这是可用防火墙规则的最大数量。 https://www.microsoft.com/en-gb/download/details.aspx?id=41653


0
投票

为什么你的端口号是“65535”而不是1433?

SQL数据库通过端口1433进行通信。我认为这就是您无法连接到Azure SQL DB的原因。 enter image description here

请参考:Server-level IP firewall rules

我们无法更改Azure SQL Server中的端口。您的数据库托管在超出“客户”控制范围的负载平衡云服务器实例上。

参考:Change port in azure sql server

端口1433是必须在承载SQL数据库客户端应用程序的台式计算机上打开的唯一端口。

如果您不知道如何打开计算机上的端口1433,

请参阅:How To Open Firewall Port 1433 for SQL Server Database Engine

关于如何在Azure SQL数据库中加载数据,Azure提供了许多方法。

  1. Load data from CSV into Azure SQL Database (flat files)
  2. Loading files from Azure Blob storage into Azure SQL Database

有关更多详细信息,请参阅Load data into SQL Server or Azure SQL Database with SQL Server Integration Services

它们都可以帮助您在Azure SQL数据库中加载数据。

希望这可以帮助。

© www.soinside.com 2019 - 2024. All rights reserved.