好記憶不如爛筆頭,能記下點東西,就記下點,有時間拿出來看看,也會發覺不一樣的感受.
介紹下從kafka中獲取數據,然後放入到 mysql 的操作!
目錄
目標
模擬一個考試系統(學生,老師,成績),將考試系統的所有數據都放入到kafka的流中,用 nifi 的組件去去拿取出來,並放入到mysql的數據庫中去的這樣一個業務操作。
一、準備工作
1.kafka集羣
必須要有個kafka集羣或者有一個單機的kafka,用來存放數據。具體怎麼安裝kafka或者kafka集羣,網絡中有很多,這裏不再複述。注意:在 kafka 的 server.properties 中要配置如下項目,否則容易出錯,連接不上的問題。
host.name=192.168.10.216
listeners=PLAINTEXT://192.168.10.216:9092
2.zookeeper集羣
nifi是基於zookeeper集羣來實現協調操作的,那麼一個必備的zookeeper集羣是少不了的,kafka流式處理同樣也是要zookeeper的,所以zookeeper是一定要安裝好的,如果是單機,那就統一使用單機處理。
安裝 zookeeper 的時候,一定要注意 zookeeper 的dataDir 目錄一定要跟kafka的config目錄下的目錄是一致的。
3.數據表
數據表在一個sql文件裏面,具體信息如下:
4. 造數程序
5.發送程序
二、NIFI UI配置
需要在nifi的UI界面上配置上kafka的處理器,分隔的處理器,轉化校驗處理器,放入數據庫處理器等,那麼現在我們一步一步來操作:
1.kafka的處理器
拉取一個kafka的處理器,並做如下配置:,主要是這個配置,配置出錯,那麼可能導致沒有辦法進行下一步操作。
紅線部分的都是需要注意的地方,如果配置出錯,那麼可能結果也會出錯!
2. EvaluateJsonPath 處理器配置
拉取一個EvaluateJsonPath 處理器,用來將kakfa內的jsong數據做簡單的處理,主要是得到數據標識和返回的消息,具體配置如下:
紅線部分也是要特別注意的地方,如果配置出錯,那麼結果也會出錯.
3.SplitJson處理器
配置SplitJson處理器,用來獲取json串中的json數據對象,這樣方便後邊用來入庫.
Json path 這塊的配置很重要,如果配置出錯,那麼得到的數據json串也會出錯,自然結果也會出錯。
4.EvaluateJsonPath 處理器
拉取一個EvaluateJsonPath 處理器,用來將kakfa內的json數據做簡單的處理,主要是得到數據具體項目,具體配置如下:
此操作的意義是 : 將json串中的數據條目,使用 $ 表達式的方式獲取數據值,在數據走到這個處理器的時候,就可以拿到對應的數值。
5.PutSQL處理器
拉取一個PutSQL,設置連接池對象,和insert 語句操作,具體如下:
在此,DBCPConnectionPool的連接池配置,這裏在使用的時候,就可以看看連接池的配置:
主要配置這些操作,就可以讓連接池生效管用,前提是 : 一定要配置正確相關信息。
6.Setting 的配置信息
每一個處理器,都有自己的配置信息需要處理,所以要格外注意配置信息的配置:
我們再使用任何處理器的時候,都會要讓設置automatically terminate relationships的
這裏設置表示你要丟棄哪些關聯,這裏主要是丟棄failure 和 unmatched的項目。
7.Scheduling的設置
用紅框標註的,是需要注意的地方,表示每一個處理器在處理的時候,可以配置的項目.
8.完整的配置圖如下
這個表示把數據放入到kakfa的處理器中,然後從處理器中把josn數據取出來,格式化,然後組合成insert into 的插入sql語句,插入完成之後,就可以去數據庫中查找最終的結果。
9.執行結果
可以通過數據庫來查看數據錄入的正確性.通過以上的操作,開啓處理器後,可以看見數據庫的結果爲 :
如此操作之後,就可以將我們放入kafka的json格式的老師數據,同學數據和分數數據拉取下來,放入到我們的mysql數據庫中。
如果需要源碼或者需要這個的設計文檔,請微信搜索:codingba ,留意我會發相關資料。