我是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(配置)
听起来你在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
为什么你的端口号是“65535”而不是1433?
SQL数据库通过端口1433进行通信。我认为这就是您无法连接到Azure SQL DB的原因。
请参考: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提供了许多方法。
有关更多详细信息,请参阅Load data into SQL Server or Azure SQL Database with SQL Server Integration Services。
它们都可以帮助您在Azure SQL数据库中加载数据。
希望这可以帮助。