web-dev-qa-db-ja.com

SQLをApache nifiに接続する

私はnifiを使い始めたばかりですが、SQLサーバーデータベースをnifiに接続して、プロセッサでデータフローを作成します。どうすればこれを行うことができますか?.

事前に感謝サム

8
sam

NiFiを使用したデータベースの情報の取得に関する2つの優れた記事を次に示します。

  1. http://www.batchiq.com/database-injest-with-nifi.html

  2. http://www.batchiq.com/database-extract-with-nifi.html

RDBMSへの接続を提供するために DBCPConnectionPool サービスを構成する方法と、データを抽出してデータを取り込むフローの例を説明/図解しています。

13
mattyb

mattyb answer で拡張

最新のHortonworksサンドボックス、またはDockerコンテナーを使用するその他のセットアップを使用している場合は、以下をお読みください。

JDBC jarファイルdocker内をインストールする必要があります。 SQL Serverの場合は、6.2以上である必要があります。

docker ps
docker exec -it <mycontainer uuid> bash

Dockerコンテナーに入る方法は? はコンテナーへのログインに役立ちます。

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 Database DBCPConnectionPool Setup

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

File:/// usr/lib/jvm/jre/lib /を任意のパスに変更できます。

8
TamusJRoyce

拡張 TamusJRoyceの答え

Apache/nifiなどのdockerイメージまたは前述のHortonworksサンドボックスを介して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イメージの詳細で終了します。これにより、イメージが正しく実行されます。
1