暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

使用 Python 的 Databricks SQL 连接器在 Lakehouse 上构建数据应用程序

原创 谭磊Terry 恩墨学院 2022-09-17
943

我们很高兴地宣布Databricks SQL Connector for Python 全面上市。这遵循了最近在 Amazon Web Services 和 Azure 上的 Databricks SQL 的普遍可用性。Python 开发人员现在可以在 Lakehouse 上构建数据应用程序,受益于对所有数据进行分析的 创纪录性能。

本机 Python 连接器提供简单的安装和Python DB API 2.0兼容接口,可以轻松查询数据。它还自动在 Databricks SQL 和 Python 数据类型之间转换,无需样板代码。

在这篇博文中,我们将介绍一些连接到 Databricks 并针对示例数据集运行查询的示例。

从 PyPI 简单安装

使用本机 Python 连接器,无需下载和安装 ODBC/JDBC 驱动程序。通过 pip 安装,这意味着您可以在应用程序中包含此连接器并将其用于 CI/CD:

pip install databricks-sql-connector

安装需要 Python 3.7+

查询表和视图

该连接器适用于 SQL 端点以及通用集群。在此示例中,我们将向您展示如何连接到 SQL 端点并在其上运行查询。为了建立连接,我们导入连接器并传入连接和身份验证信息。您可以使用 Databricks 个人访问令牌 (PAT) 或 Microsoft Azure 活动目录 (AAD) 令牌进行身份验证。

以下示例从 NYC 出租车示例数据集中检索行程列表,并将行程距离打印到控制台。cursor.description 包含有关 DB-API 2.0 格式的结果集的元数据。cursor.fetchall() 获取所有剩余的行作为 Python 列表。

from databricks import sql

with sql.connect(server_hostname="", http_path="",
access_token="") as conn:
  with conn.cursor() as cursor:
    cursor.execute(“SELECT * FROM samples.nyctaxi.trips WHERE trip_distance 

输出(为简洁而编辑):


5


Description: [('tpep_pickup_datetime', 'timestamp', …), ('tpep_dropoff_datetime', 'timestamp', …), ('trip_distance', 'double', …), …]

Results:
5.35
6.5
5.8
9.0
11.3
…

注意:使用参数化查询时,应仔细清理输入以防止 SQL 注入攻击。

将数据插入表中

该连接器还允许您运行 INSERT 语句,这对于将 Python 应用程序生成的少量数据(例如数千行)插入表中非常有用:

cursor.execute("CREATE TABLE IF NOT EXISTS squares (x int, x_squared int)")

squares = [(i, i * i) for i in range(100)]
values = ",".join([f"({x}, {y})" for (x, y) in squares])
cursor.execute(f"INSERT INTO squares VALUES {values}")

cursor.execute("SELECT * FROM squares")
print(cursor.fetchmany(3))

输出

[Row(x=0, x_squared=0), Row(x=1, x_squared=1), Row(x=2, x_squared=4)]

要批量加载大量数据(例如数百万行),我们建议先将数据上传到云存储,然后执行COPY INTO命令。

查询有关表和视图的元数据

除了执行 SQL 查询外,连接器还可以轻松查看有关目录、数据库、表和列的元数据。以下示例将从示例表中检索有关列的元数据信息:

cursor.columns(schema_name="default", table_name="squares")

for row in cursor.fetchall():
  print(row.COLUMN_NAME)

输出(为简洁而编辑):


x
x_squared

Lakehouse 上 Python 应用程序开发人员的光明未来

我们要感谢 Dropbox 的 PyHive 连接器的贡献者,它为 Python 的 Databricks SQL 连接器的早期版本提供了基础。在接下来的几个月里,我们计划开源 Python 的 Databricks SQL 连接器,并开始欢迎社区的贡献。

我们很高兴我们的客户将使用适用于 Python 的 Databricks SQL 连接器构建什么。在即将发布的版本中,我们期待添加对其他身份验证方案、多目录元数据和 SQLAlchemy 的支持。请试用连接器,并给我们反馈。我们很想听听您希望我们支持什么。

原文标题:Building Data Applications on the Lakehouse With the Databricks SQL Connector for Python
原文作者:Bilal Aslam, Ben Fleis, Niall Egan and Shant Hovsepian
原文地址:https://www.databricks.com/blog/2022/01/26/building-data-applications-on-the-lakehouse-with-the-databricks-sql-connector-for-python.html

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论