如何在Databricks集群安装ODBC Driver 17 for PostgreSQL以调用存储过程
在Azure Databricks集群安装PostgreSQL ODBC驱动并调用存储过程
一、安装PostgreSQL ODBC驱动到Databricks集群
Databricks集群默认不带PostgreSQL ODBC驱动,可通过两种方式安装:
方法1:集群初始化脚本(持久生效)
- 创建Shell脚本
install_postgres_odbc.sh,内容如下:
#!/bin/bash apt-get update apt-get install -y odbc-postgresql # 验证安装结果 odbcinst -q -d -n "PostgreSQL Unicode"
- 将脚本上传到DBFS,比如路径
dbfs:/databricks/scripts/install_postgres_odbc.sh - 编辑目标集群配置,在初始化脚本模块添加该脚本路径,保存后重启集群
方法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驱动:
- 在集群库页面添加Maven坐标
org.postgresql:postgresql:42.6.0(或最新版本) - 执行存储过程:
# 配置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
相关产品推荐
相关产品推荐

