无法在Apache Airflow中设置DB2 / DashDB JDBC连接

时间:2017-01-28 17:16:01

标签: apache jdbc db2 airflow dashdb

我正在尝试使用Airflow UI创建DB2 / DashDB连接。我添加了db2jcc4.jar驱动程序并提供了路径以及类名com.ibm.db2.jcc.DB2Driver.class

我尝试运行一个简单的查询(在ad hoc UI中)并始终得到相同的错误

  

java.lang.RuntimeException:找不到类com.ibm.db2.jcc.DB2Driver.class

之前是否有人需要在Apache Airflow中设置DB2 / DashDB连接?

网上没有发现任何相关信息。

由于

2 个答案:

答案 0 :(得分:0)

检查可能是愚蠢的事情,但请确保在连接URL,驱动程序路径和驱动程序类中没有任何前导空格。此外,“气流”用户(或正在运行气流过程的用户应该可以访问驱动程序路径。

答案 1 :(得分:0)

如果您还没有想到这一点,我遇到了同样的问题。

通过一些调试,我发现文件jdbc_hook.py在这里https://github.com/apache/incubator-airflow/blob/master/airflow/hooks/jdbc_hook.py#L55 缺少jaydebeapi.connect方法调用中预期的1个参数。

特别是缺少第二个参数,它应该是连接的URL。

我将方法get_conn中的代码更改为以下内容以试用,然后就可以了。

  def get_conn(self):
    ......

    conn = jaydebeapi.connect(jdbc_driver_name,
                             host,
                      driver_args=[str(login), str(psw)],
                              jars=jdbc_driver_loc)
    return conn    

请注意host添加到jaydebeapi.connect的调用中。

我正在考虑开设PR,但随后进行审核,他们已经在几个地方找到了一些东西(在Airflow的PR中搜索jdbc):

https://github.com/apache/incubator-airflow/pull/2227