【问题标题】:How can I configure Oracle Driver Manager on Microsoft Azure?如何在 Microsoft Azure 上配置 Oracle Driver Manager?
【发布时间】:2019-11-20 21:28:02
【问题描述】:

我有一个在 Microsoft Azure 中开发的系统,更准确地说是在 Databricks 中开发的。 我的挑战是连接到外部 Oracle 数据库,但经过多次尝试,还是产生了同样的错误:

python中的代码:

import pyodbc
try1 = 'Devart ODBC Driver for Oracle'
try2 = 'Microsoft ODBC for Oracle'
try3 = 'Oracle'
try4 = 'Oracle ODBC driver for Oracle 11g'

conn_str = ('DRIVER={'+try3+'};'+'SERVER=server;'+'DATABASE=db;'+'UID=uid;'+'PWD=pwd;')

cnxn = pyodbc.connect(conn_str)

错误信息:

('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'Oracle' : file not found (0) (SQLDriverConnect)")

有谁知道问题是什么以及如何在 Azure 环境中解决它?

非常感谢!

【问题讨论】:

  • 请将代码和错误消息作为文本而不是图像包含在您的帖子中。

标签: python-3.x oracle azure azure-databricks


【解决方案1】:

在 Databricks 中安装 ODBC 驱动程序有点麻烦,因为您必须提供启动 bash 脚本来安装和配置驱动程序。

JDBC driver install 更简单,因为您只需上传库。

因此,如果可能,请使用 Spark 和 JDBC 而不是 pyodbc。见https://docs.databricks.com/data/data-sources/oracle.html

如果您需要做的不仅仅是 Spark 读取和加载,您可以随时使用Scala or Java cell with JDBC

【讨论】:

  • 我需要在Oracle中执行一个带有动态参数的过程,我相信这个解决方案对我没有帮助,对吗?
  • Scala/Java 和 JDBC 是一流的 Oracle 客户端,文档齐全并得到全面支持。对于复杂的任务,它比 pyodbc 更好。
  • 所以,我不能像你提到的那样使用 Spark?:“所以,如果可能,请使用 Spark 和 JDBC 而不是 pyodbc。请参阅 docs.databricks.com/data/data-sources/oracle.html
  • 您可以使用 Spark 将表和查询读入数据帧,以及将数据帧写入表。但是你不能使用 Spark 来运行存储过程,你必须“下拉”到 Java 或 Scala 并直接使用 JDBC API。
  • David,在传递给我的链接中:“docs.databricks.com/data/data-sources/sql-databases.html”表示我必须执行以下命令之一:“Class.forName("com.mysql.jdbc.Driver")”或"Class.forName("org.mariadb.jdbc.Driver")"。要使用 Oracle 驱动程序,我知道我必须执行命令“Class.forName("oracle.jdbc.driver.OracleDriver")”,但返回以下错误“java.lang.ClassNotFoundException: oracle.jdbc.OracleDriver”。我需要在 Databricks 环境中配置一些东西来安装我需要的驱动程序吗?
【解决方案2】:

默认情况下,Azure Databricks 没有安装 Oracle ODBC 驱动程序。

在单个单元格中运行以下命令以在 Azure Databricks 群集上安装 Oracle ODBC 驱动程序。

%sh    
apt-get -y install unixodbc-dev
/databricks/python/bin/pip install pyodbc

一旦您在 Azure Databricks 集群上安装了 Oracle ODBC 驱动程序,就可以连接 Oracle 数据库了。

有关更多详细信息,请参阅以下主题,它们解决了类似的问题。

How to install PYODBC in Databricks

https://social.msdn.microsoft.com/Forums/en-US/5bb3d872-613f-4738-b9d6-bc1dba32a354/unable-to-connect-to-sql-database-using-rodbc?forum=AzureDatabricks

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-26
    • 2016-04-19
    • 1970-01-01
    • 2023-04-02
    • 2019-06-28
    • 1970-01-01
    相关资源
    最近更新 更多