将SQL连接到Apache NiFi

13

我是nifi的新手,想要将SQL Server数据库连接到nifi,并使用处理器创建数据流。我应该如何操作?能否有人详细地帮助我呢?

提前感谢各位 Sam

3个回答

14

1
我需要在我的电脑上安装SQL Server-2012,我需要安装哪一个版本?能否分享正确的SQL Server链接以便将其与Nifi连接。 - sam
1
DBCPConnectionPool 的链接已经过时。目前看来,v1.7.0 在这里:https://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi/nifi-dbcp-service-nar/1.7.0/org.apache.nifi.dbcp.DBCPConnectionPool/。不幸的是,文档使用 iframe,因此获取页面的直接链接会丢失菜单。最好去 https://nifi.apache.org/docs.html,并在菜单中找到 DBCPConnectionPool。当你搜索“数据库”或“JDBC”或“RDBMS”或其他一些东西时,这个组件的名称有点愚蠢。 - Davos

11

mattyb 的回答 基础上进行扩展。

如果你正在使用最新的 Hortonworks 沙盒或其他使用 Docker 容器的设置,请阅读以下内容。

你必须在 Docker 容器内部安装 JDBC jar 文件。对于 SQL Server,它应该是 6.2 或更高版本。

docker ps
docker exec -it <mycontainer uuid> bash

如何进入Docker容器的shell?将帮助您登录到该容器。

cd file:///usr/lib/jvm/jre/lib/
mkdir jdbc
cd ./jdbc
wget https://download.microsoft.com/download/3/F/7/3F74A9B9-C5F0-43EA-A721-07DA590FD186/sqljdbc_6.2.2.0_enu.tar.gz
tar xvzf sqljdbc_6.2.2.0_enu.tar.gz
cp ./sqljdbc_6.2/enu/mssql-jdbc-6.2.2.jre8.jar ./

Apache Nifi JDBC 数据库 DBCPConnectionPool 设置

jdbc:sqlserver://192.168.1.201:1433;databaseName=[your database]
com.microsoft.sqlserver.jdbc.SQLServerDriver

你可能需要使用Windows中的ipconfig或Mac/Linux中的ifconfig来查找主机的IPv4地址,并将其替换为IP地址。

您可以将file:///usr/lib/jvm/jre/lib/更改为任何您想要的路径。


太棒了!非常感谢!我差点要撞墙,因为我正在Docker中运行,不知道如何从容器中完成这个操作。我认为值得添加一些代码,以便在Docker镜像的一部分中下载JDBC驱动程序,这样您就可以在不必执行进入容器的情况下获得JDBC。 - Newteq Developer
如果您评论或链接到一个可工作的示例,我将很乐意添加它。 - TamusJRoyce
1
我正在制作一个Dockerfile,以便我们可以将其用于我们的解决方案。一旦它可用,我会在这里发布 :) - Newteq Developer
只是提醒一下 - sqljdbc 8.4.1 版本会抛出“过时”的错误,只有使用此处提到的 6.2 版本才能成功。 - cgage1

3

TamusJRoyce的回答的基础上进行扩展。

如果您通过像apache/nifi或前面提到的Hortonworks sandbox这样的docker镜像来运行nifi,下面的内容将帮助您在镜像上获取所需的驱动程序,以便您不需要手动exec进入容器执行此操作。

请查看Docker文件下方的注释。

FROM apache/nifi

USER root
RUN mkdir /lib/jdbc
WORKDIR /lib/jdbc
RUN wget https://download.microsoft.com/download/3/F/7/3F74A9B9-C5F0-43EA-A721-07DA590FD186/sqljdbc_6.2.2.0_enu.tar.gz
RUN tar xvzf sqljdbc_6.2.2.0_enu.tar.gz
RUN cp ./sqljdbc_6.2/enu/mssql-jdbc-6.2.2.jre8.jar ./

USER nifi

EXPOSE 8080 8443 10000 8000

WORKDIR ${NIFI_HOME}
ENTRYPOINT ["../scripts/start.sh"]
  1. 上述图像使用apache/nifi作为基础映像。如果您想要,可以使用任何nifi docker映像作为基础。
  2. 您可以指定任何位置的lib/jdbc,只需记住您需要将此用作文件位置的引用,以便将其引用为file:///lib/jdbc/mssql-jdbc-6.2.2.jre8.jar
  3. 最后,切换回nifi用户,并完成标准的nifi映像详细信息。这样可以确保映像正确运行。

感谢您提供这个答案。我正在使用Docker中的NiFi 1.13。我已经按照您的示例进行了操作,但是我的DBCPConnectionPool卡在“启用”状态,并显示错误消息“无法加载数据库驱动程序”。还有其他的想法可以尝试吗? - PrestonDocks
没有看到 Docker 文件,我唯一的猜测是 wget 中可能指定了不兼容的驱动程序,或者你需要在 NiFi 中指定的 jar 的位置没有被找到。 - Newteq Developer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接