今天來介紹一下 NiFi 如何對 Relation Database 做整合操作,這邊我會以 MySQL 來做一個介紹。
首先我們一樣透過 docker 來建立 mysql,這邊一樣給讀者們一個 docker-compose.yaml
sample:
version: '3'
services:
nifi:
image: nifi-sample
container_name: nifi-service
restart: always
ports:
- 8443:8443/tcp
- 8080:8080/tcp
env_file: .env
environment:
SINGLE_USER_CREDENTIALS_USERNAME: ${NIFI_USERNAME}
SINGLE_USER_CREDENTIALS_PASSWORD: ${NIFI_PASSWORD}
AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
AWS_REGION: ${AWS_REGION}
networks:
- nifi-network
nifi-registry:
image: apache/nifi-registry:1.14.0
container_name: nifi-registry-service
restart: always
ports:
- 18080:18080/tcp
networks:
- nifi-network
mysql:
image: mysql:5.7
container_name: nifi-rdb
restart: always
ports:
- 3306:3306/tcp
env_file: .env
environment:
MYSQL_ROOT_PASSWORD: ${DB_ADMIN_PASSWORD}
MYSQL_DATABASE: ${DB_NAME}
networks:
- nifi-network
networks:
nifi-network:
接著透過 docker-compose up -d
建立起來就沒有問題了。
至於如何在 NiFi 中來對 MySQL 做對接了,其實NiFi 主要是提通的 General Processor 和 Controller Service Settings,也就是說對於外部的 RDB 或 Query Engine等服務,所採用的設定都是一樣的,唯一不一樣的是 JDBC Driver
。
因為 NiFi 本身是用 JAVA 所開發出來的,所以對於外部的資料庫時必須要透過 JDBC 的 Driver 才可以做資料對接,這是相對比較有一點小麻煩,因為我們必須先下載 JDBC Driver 到指定的 Container 的路徑下。
這邊給讀者們 MySQL JDBC Driver 下載的 link,請點此,再依據自己的 MySQL 版本下載對應的 JDBC,Driver name
是 com.mysql.jdbc.Driver
。
接著我們到 Controller Service
來選擇 DBConnectionPool 來做對接的設定:
接著我們設定好其中必要的 Properties:
jdbc:mysql://172.17.0.1:3306/nifi?user=[username]&password=[password]
com.mysql.jdbc.Driver
/tmp/mysql-connector-java-5.1.49.jar
接下來我們就可以來使用 Processor 對 MySQL 做整合了,今天會用 PutSQL 和 QueryDatabaseTable 來做介紹:
這個 Processor 主要是讓我們可以對 Database 做 SQL 的操作,ex. INSERT, UPDATE, DELETE 等,所以他在設定上也是相對簡單,參考如下:
透過以上建制之後,我們就可以對 MySQL 做資料的操作了。
這個 Processor 主要是用來從 DB 到讀取資料出來用的,但就無法做 Insert, update 等操作,我們來看一下他的設定:
MySQL
。此外他也有支援 Orable, MSSQL 等類型,
做分隔簡單來說,你可以想像成我們就常用的 SELECT..FROM..WHERE..
的語法拆解到這個 Processor 的各個設定上。當然你也可以透過 PutSQL
做到一樣的效果。
透過今天簡單的小分享,想必大家應該知道如何從 NiFi 的角度出發來向 RDB table 的資料做操作,雖然今天是以 MySQL 為例,但其實其他的 RDB 也都是一樣的操作,差別在於 JDBC 那部份的設定而已,讀者們可以再去嘗試看看喔。
既然已經講完了關連式資料庫的整合,明天就會來講如何與 MongoDB 做整合,這部分就不用那麼麻煩了,因為 NiFi 就有內建好的 Processor 可以做使用,所以讀者們也不必太擔心。