You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Databricks集群安装ODBC Driver 17 for PostgreSQL以调用存储过程

在Azure Databricks集群安装PostgreSQL ODBC驱动并调用存储过程

一、安装PostgreSQL ODBC驱动到Databricks集群

Databricks集群默认不带PostgreSQL ODBC驱动,可通过两种方式安装:

方法1:集群初始化脚本(持久生效)

  1. 创建Shell脚本install_postgres_odbc.sh,内容如下:
#!/bin/bash
apt-get update
apt-get install -y odbc-postgresql
# 验证安装结果
odbcinst -q -d -n "PostgreSQL Unicode"
  1. 将脚本上传到DBFS,比如路径dbfs:/databricks/scripts/install_postgres_odbc.sh
  2. 编辑目标集群配置,在初始化脚本模块添加该脚本路径,保存后重启集群

方法2:Notebook临时安装(仅当前会话有效)

在Notebook单元格中运行以下命令:

%sh
apt-get update
apt-get install -y odbc-postgresql
odbcinst -q -d -n "PostgreSQL Unicode"

二、配置连接并调用存储过程

驱动安装完成后,可通过两种方式调用存储过程:

方式1:PyODBC调用

替换原SQL Server驱动为PostgreSQL驱动,使用正确的连接字符串:

import pyodbc

# 配置连接参数
server = "mydatabase.database.azure.net"
database = "AdventureWorks"
username = "jonnyFast"
password = "MyPassword"
driver = "{PostgreSQL Unicode}"

# 建立连接
conn = pyodbc.connect(f"DRIVER={driver};SERVER={server};DATABASE={database};UID={username};PWD={password};PORT=5432")

# 调用存储过程(示例:带两个参数的存储过程sp_my_procedure)
cursor = conn.cursor()
cursor.execute("CALL sp_my_procedure(?, ?)", ("value1", "value2"))
conn.commit()

# 关闭资源
cursor.close()
conn.close()

方式2:PySpark SQL调用(推荐Spark场景)

通过JDBC连接,无需ODBC,需先安装PostgreSQL JDBC驱动:

  1. 在集群库页面添加Maven坐标org.postgresql:postgresql:42.6.0(或最新版本)
  2. 执行存储过程:
# 配置JDBC参数
jdbc_url = f"jdbc:postgresql://{server}:5432/{database}"
connection_properties = {
    "user": username,
    "password": password,
    "driver": "org.postgresql.Driver"
}

# 调用存储过程
spark.sql(f"""
    CALL {database}.public.sp_my_procedure('value1', 'value2')
""")

三、验证驱动安装

在Notebook运行以下命令,确认驱动存在:

%sh
odbcinst -q -d

输出应包含PostgreSQL Unicode和PostgreSQL ANSI条目

内容的提问来源于stack exchange,提问作者Singh A

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 00:26:17