本教程介绍如何将 Azure Databricks 与虚拟网络中的 SQL Server Linux Docker 容器集成。
In this tutorial, you learn how to:
将 Azure Databricks 工作区部署到虚拟网络
在公用网络中安装 Linux 虚拟机
安装 Docker
安装 Linux 上的 Microsoft SQL Server docker 容器
使用 Databricks 笔记本中的 JDBC 查询 SQL Server
在虚拟网络中创建 Databricks 工作区
。
安装
用于 Windows 的 Ubuntu
。
下载
SQL Server Management Studio
。
创建 Linux 虚拟机
在 Azure 门户中,选择“虚拟机”的图标。 然后选择“+ 添加”。
在“基本信息”选项卡上,选择 Ubuntu Server 18.04 LTS 并将 VM 大小更改为 B2。 选择管理员用户名和密码。
导航到“
网络
”选项卡。选择虚拟网络和包含 Azure Databricks 群集的公共子网。 选择“查看 + 创建”选项卡,然后选择“创建”以部署虚拟机。
部署完成后,导航到虚拟机。 请注意“概述”中的公共 IP 地址和虚拟网络/子网。 选择“公共 IP 地址”
将“分配”更改为“静态”并输入“DNS 名称标签”。 选择“保存”并重启虚拟机。
在“设置”下选择“网络”选项卡。 请注意,在 Azure Databricks 部署过程中创建的网络安全组与虚拟机关联。 选择“添加入站端口规则”。
添加规则,为 SSH 打开端口 22。 使用以下设置:
在 Docker 容器中运行 SQL Server
打开
用于 Windows 的 Ubuntu
,或者其他任何允许你通过 SSH 登录虚拟机的工具。 导航到 Azure 门户中的虚拟机,然后选择“连接”以获取连接所需的 SSH 命令。
在 Ubuntu 终端中输入命令,然后输入在配置虚拟机时创建的管理员密码。
使用以下命令在虚拟机上安装 Docker。
sudo apt-get install docker.io
使用以下命令验证 Docker 的安装:
sudo docker --version
安装映像。
sudo docker pull mcr.microsoft.com/mssql/server:2017-latest
检查映像。
sudo docker images
从映像运行容器。
sudo docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Password1234' -p 1433:1433 --name sql1 -d mcr.microsoft.com/mssql/server:2017-latest
验证容器是否正在运行。
sudo docker ps -a
创建 SQL 数据库
打开 SQL Server Management Studio 并使用服务器名和 SQL 身份验证连接到服务器。 登录用户名是 SA,密码是 Docker 命令中设置的密码。 示例命令中的密码为 Password1234
。
成功连接后,选择“新建查询”,然后输入以下代码片段以创建数据库、表,并在表中插入一些记录。
CREATE DATABASE MYDB;
USE MYDB;
CREATE TABLE states(Name VARCHAR(20), Capitol VARCHAR(20));
INSERT INTO states VALUES ('Delaware','Dover');
INSERT INTO states VALUES ('South Carolina','Columbia');
INSERT INTO states VALUES ('Texas','Austin');
SELECT * FROM states
从 Azure Databricks 查询 SQL Server
导航到 Azure Databricks 工作区,并验证是否已按照先决条件的要求创建了一个群集。 然后选择“创建笔记本”。 为笔记本指定一个名称,选择 Python 作为语言,然后选择创建的群集。
使用以下命令对 SQL Server 虚拟机的内部 IP 地址执行 ping 操作。 此 ping 操作应会成功。 如果不成功,请验证容器是否正在运行,并查看网络安全组 (NSG) 配置。
ping 10.179.64.4
还可以使用 nslookup 命令进行查看。
nslookup databricks-tutorial-vm.westus2.cloudapp.azure.com
成功对 SQL Server 执行 ping 操作后,即可查询数据库和表。 运行以下 Python 代码:
jdbcHostname = "10.179.64.4"
jdbcDatabase = "MYDB"
userName = 'SA'
password = 'Password1234'
jdbcPort = 1433
jdbcUrl = "jdbc:sqlserver://{0}:{1};database={2};user={3};password={4}".format(jdbcHostname, jdbcPort, jdbcDatabase, userName, password)
df = spark.read.jdbc(url=jdbcUrl, table='states')
display(df)
若不再需要资源组、Azure Databricks 工作区以及所有相关资源,请将其删除。 删除作业可避免产生不必要的计费。 若计划将来使用 Azure Databricks 工作区,则可停止群集并在以后重启。 如果不打算继续使用此 Azure Databricks 工作区,请使用以下步骤删除在本教程中创建的所有资源:
在 Azure 门户的左侧菜单中,单击“资源组”,并单击所创建的资源的名称。
在资源组页上选择“删除”,在文本框中键入要删除的资源的名称,然后再次选择“删除”。
请继续学习下一篇文章,了解如何使用 Azure Databricks 提取、转换和加载数据。
教程:使用 Azure Databricks 提取、转换和加载数据