在 Azure Databricks 上设置 PostgreSQL 驱动程序
Posted
技术标签:
【中文标题】在 Azure Databricks 上设置 PostgreSQL 驱动程序【英文标题】:Setting up PostgreSQL driver on Azure Databricks 【发布时间】:2021-09-04 19:33:35 【问题描述】:如何修改以下代码以安装 PostgreSQL JDBC 驱动程序而不是 MS SQL?我的目标是使用 pyodbc 从 Azure Databricks 连接到 Redshift 数据库。我认为 PostgreSQL JDBC 驱动程序已经默认安装在我的 Databricks 运行时中,但是当我运行 pyodbc.drivers()
时,我得到的只是“['ODBC Driver 17 for SQL Server']”,所以我猜不是。一旦安装了 PostgreSQL 驱动程序,pyodbc.connect() 字符串会是什么样子?如果更简单,我们可以改用 Amazon 推荐的 Redshift JDBC 驱动程序。
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
apt-get update
ACCEPT_EULA=Y apt-get install msodbcsql17
apt-get -y install unixodbc-dev
sudo apt-get install python3-pip -y
pip3 install --upgrade pyodbc
【问题讨论】:
【参考方案1】:你需要改变你的方法并使用correct instructions to install and configure the Redshift driver:
-
通过
apt-get
安装unixodbc-dev
下载 64 位 Debian 软件包(实际链接在文档中)
使用以下信息修改odbcinst.ini
(您可以将该文件存储在DBFS上并从中复制,或者将/opt/amazon/redshiftodbc/lib/64/amazon.redshiftodbc.ini
复制到odbcinst.ini
):
[ODBC Drivers]
Amazon Redshift (x64)=Installed
[Amazon Redshift (x64)]
Description=Amazon Redshift ODBC Driver (64-bit)
Driver=/opt/amazon/redshiftodbc/lib/64/libamazonredshiftodbc64.so
-
通过
pip
安装pyodbc
所有这些步骤最好作为可以附加到集群的初始化脚本来实现。
附:但是您真的需要通过 ODBC 工作吗?为什么不使用 Databricks 提供的更具扩展性的spark-redshift connector?
【讨论】:
这些说明适用于 Linux;我正在使用 Windows 环境。你能修改说明吗? 您是在谈论从 Azure Databricks 环境连接还是从本地 Windows 机器连接?如果是前者,那就是 Linux Azure 数据块,但是当我下载 Debian 文件时,我无法查看这些文件。我认为我们必须将 windows 文件下载到我的 windows 桌面,然后将其上传到 databricks。 只需将所有shell命令,如curl等初始化shell脚本,上传到dbfs并作为初始化脚本添加到集群中 我没有完全理解。您介意准确说明我应该在脚本中添加什么以附加到集群吗?以上是关于在 Azure Databricks 上设置 PostgreSQL 驱动程序的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Azure 数据工厂的 Databricks 上运行 .Net spark 作业?
使用 azure databricks 读取 azure databricks 日志 json 文件
如何使用 Azure Synapse 在 Databricks 上删除表或删除行?
Azure Databricks 在 Blob 存储上打开文件时出现问题
Databricks Connect:无法连接到 azure 上的远程集群,命令:“databricks-connect test”停止