从 Python 或 R 连接到 Azure Databricks

在本文中,你将学习如何使用 Python 或 R 语言通过 Databricks ODBC 驱动程序来连接 Azure Databricks。 在建立连接后,可以从 Python 或 R 客户端访问 Azure Databricks 中的数据。 还可以使用这些客户端来进一步分析数据。

先决条件

  • 必须具有 Azure Databricks 工作区、Spark 群集以及与群集关联的示例数据。 如果尚不具备这些先决条件,请完成快速入门中的快速入门。

  • Databricks 驱动程序下载页面下载 Databricks ODBC 驱动程序。 安装 64 位版本的驱动程序。

  • 在 Databricks 中设置个人访问令牌。 有关说明,请参阅令牌管理

设置 DSN

数据源名称 (DSN) 包含有关特定数据源的信息。 ODBC 驱动程序需要使用此 DSN 来连接到数据源。 在本部分,你将设置可以用于 Databricks ODBC 驱动程序的 DSN,以便从 Python 或 R 等客户端连接到 Azure Databricks。

  1. 从 Azure Databricks 工作区中,导航到 Databricks 群集。

    Open Databricks cluster

  2. 在“配置”选项卡下,单击“JDBC/ODBC”选项卡并复制“服务器主机名”和“HTTP 路径”的值。 需要使用这些值来完成本文中的步骤。

    Get Databricks configuration

  3. 在计算机上,启动 ODBC 数据源应用程序(64 位)。

    Launch ODBC Data Sources app

  4. 在“用户 DSN”选项卡下,单击“添加”。 在“创建新数据源”对话框中,选择“Simba Spark ODBC 驱动程序”,然后单击“完成”。

    Add ODBC data source

  5. 在“Simba Spark ODBC 驱动程序”对话框中,提供以下值:

    Configure DSN

    下表提供了有关要在对话框中提供的值的信息。

    字段
    数据源名称 为数据源提供一个名称。
    主机 提供从 Databricks 工作区中为服务器主机名复制的值。
    端口 输入 443
    身份验证>机制 选择“用户名和密码”
    用户名 输入 token
    密码 输入从 Databricks 工作区中复制的令牌值。

    在“DSN 设置”对话框中执行以下附加步骤。

    • 单击“HTTP 选项”。 在打开的对话框中,粘贴从 Databricks 工作区中复制的“HTTP 路径”值。 单击“确定”。
    • 单击“SSL 选项”。 在打开的对话框中,选中“启用 SSL”复选框。 单击“确定”。
    • 单击“测试”以测试到 Azure Databricks 的连接。 单击“确定”以保存配置。
    • 在“ODBC 数据源管理器”对话框中,单击“确定”。

现在已设置了 DSN。 在接下来的各部分中,你将使用此 DSN 从 Python 或 R 连接到 Azure Databricks。

从 R 进行连接

注意

本部分提供有关如何将桌面上运行的 R Studio 客户端与 Azure Databricks 集成的信息。 有关如何在 Azure Databricks 群集本身上使用 R Studio 的说明,请参阅 Azure Databricks 上的 R Studio

在本部分中,你将使用 R 语言 IDE 来引用 Azure Databricks 中可用的数据。 在开始之前,必须在计算机上安装以下各项。

  • R 语言的 IDE。 本文中使用了 RStudio for Desktop。 可以从 R Studio 下载安装该软件。

  • 如果使用 RStudio for Desktop 作为 IDE,还需要从 https://aka.ms/rclient/ 安装 Microsoft R Client。

打开 RStudio 并执行以下步骤:

  • 引用 RODBC 包。 这使得你可以使用之前创建的 DSN 连接到 Azure Databricks。
  • 使用 DSN 建立连接。
  • 对 Azure Databricks 中的数据运行 SQL 查询。 在以下代码片段中,radio_sample_data 是 Azure Databricks 中已存在的表。
  • 对查询执行一些操作来验证输出。

下面的代码片段执行以下任务:

# reference the 'RODBC' package
require(RODBC)

# establish a connection using the DSN you created earlier
conn <- odbcConnect("<ENTER DSN NAME HERE>")

# run a SQL query using the connection you created
res <- sqlQuery(conn, "SELECT * FROM radio_sample_data")

# print out the column names in the query output
names(res)

# print out the number of rows in the query output
nrow (res)

从 Python 进行连接

在本部分中,你将使用 Python IDE(例如 IDLE)来引用 Azure Databricks 中可用的数据。 在开始之前,请完成以下先决条件:

  • 此处安装 Python。 从该链接安装 Python,还要安装 IDLE。

  • 在计算机上的命令提示符下,安装 pyodbc 包。 运行以下命令:

    pip install pyodbc
    

打开 IDLE 并执行以下步骤:

  • 导入 pyodbc 包。 这使得你可以使用之前创建的 DSN 连接到 Azure Databricks。
  • 使用之前创建的 DSN 建立连接。
  • 使用所创建的连接运行 SQL 查询。 在以下代码片段中,radio_sample_data 是 Azure Databricks 中已存在的表。
  • 对查询执行操作来验证输出。

下面的代码片段执行以下任务:

# import the `pyodbc` package:
import pyodbc

# establish a connection using the DSN you created earlier
conn = pyodbc.connect("DSN=<ENTER DSN NAME HERE>", autocommit=True)

# run a SQL query using the connection you created
cursor = conn.cursor()
cursor.execute("SELECT * FROM radio_sample_data")

# print the rows retrieved by the query.
for row in cursor.fetchall():
    print(row)

后续步骤