一.說明
將Apache NiFi做為關系型數據與非關系型數據庫的數據同步工具使用,在此場景中需要將mysql導出的avro數據格式轉化為json入庫HBase
二.開拔
Ⅰ).配置ExecuteSQLRecord
a).選擇ExecuteSQLRecord
在Processor中搜索ExecuteSQLRecord

b).配置ExecuteSQLRecord
1.創建Database Connection Pool 2.創建JsonRecordSetWriter 3.配置SQL select query
select Host,User,authentication_string from mysql.user;

c).創建DBCPConnectionPool
在Database Connection Pool中選擇DBCPConnectionPool

d).配置DBCPConnectionPool
1.Database Connection URL: jdbc:mysql://hostname:3306/druid 2.Database Driver Class Name: com.mysql.jdbc.Driver 3.Database User: username 4.Database Password: password

e).激活服務

Ⅱ).配置ConvertAvroToJSON
a).選擇ConvertAvroToJSON
在Processor中搜索ConvertAvroToJSON

b).配置ConvertAvroToJSON

Ⅲ).配置SplitJson
a).選擇SplitJson
在Processor中搜索SplitJson

b).配置SplitJson

Ⅳ).配置PutHBaseJSON
a).選擇PutHBaseJSON
在Processor中搜索PutHBaseJSON

b).配置PutHBaseJSON
1.HBase Client Service: 選擇匹配版本的HBaseClient 2.Table Name: 配置入庫HBase表名 3.Row Identifier Field Name: 配置RowKey值 4.Column Family: 配置列簇

c).選擇HBase_1_1_2_ClientService
在Processor中搜索HBase_1_1_2_ClientService

d).配置HBase_1_1_2_ClientService
1.Zookeeper Quorum: hostname1:2181,hostname2:2181,hostname3:2181 2.Zookeeper Client Port: 2181 3.Zookeeper ZNode Parent: /hbase


e).激活HBase_1_1_2_ClientService

Ⅴ).配置LogAttribute

Ⅵ).啟動服務
可以點擊選擇單個Processor啟動,也可以在空白處點擊流程啟動

Ⅶ).驗證結果
a).MySQL源數據
select * from druid.druid_datasource;

b).HBase入庫數據
scan 'druid.druid_datasource',{LIMIT=>10}

三.HBase命令
## 創建表空間
create_namespace 'druid'
## 查看表空間
list_namespace_tables 'druid'
## 創建表
create 'druid.druid_datasource','cf1'
## 查看表數據
scan 'druid.druid_datasource',{LIMIT=>10}
四.MySQL數據庫驅動問題
a).解決方案一
將mysql驅動包放到nifi按照目錄的lib中,重啟nifi;如圖中無需配置:Database Driver Location(s)項

b).解決方案二
如圖配置:Database Driver Location(s)項,則驅動包可放在任何可訪問的地址,無需重啟nifi

