sql导入excel数据失败_nifi入门从Excel数据导入ES开始
概述
nifi為不同系統間數據流動而生,其可視化的界面操作允許用戶零編碼實現不同系統間的數據流轉。Nifi的架構如下圖所示:
NiFi在操作系統上的JVM內執行,JVM上NiFi的組件包括Web Server、Flow Controller、Extensions、FlowFile Repository、Content Repository、Provenance Repository。具體每個組件的作用和相關用法可以查看相關說明文檔,查看組件用法可以到官網https://nifi.apache.org或在nifi畫布中選擇組件右擊打開“view usage”查看。
Nifi也能夠支持集群模式,NIFI集群采用了Zero-Master Clustering模式,NiFi群集中的每個節點對數據執行相同的任務,但每個節點都在不同的數據集上運行, ZooKeeper選擇單個節點作為集群協調器,ZooKeeper自動處理故障轉移。集群架構如下圖所示:
更多Nifi的知識請查看官方文檔,下面從一個Excel表格數據的導入ES集群來了解一下nifi的使用。
任務描述
有如下圖所示的Excel表格數據為某web的訪問數據,每個表中含有多個sheet,sheet的名字為數據來源,數據為非結構化數據,每個sheet的字段略有不同。數據導入數據庫的同時需要標明數據來源于哪個sheet。
NIFI數據導入流程
因為多個sheet中的字段有差異,所以選擇ES作為數據庫將多個sheet統一導入一個索引中。在nifi中構建的完整導入流程如下圖所示,數據經過Processor成功處理進入下個環節,處理失敗流轉到LogAttribute Processor。
Processor配置
GetFile Processor需要指定文件目錄、需要獲取的文件過濾條件、是否保留源文件等屬性。
ConvertExcelToCSVProcessor Processor中根據Excel的格式,選擇跳過前3行,CSV Format選擇Microsoft Excel。
ConvertRecord屬性設置中指明Record Reader和Record Writer分別為CSVReader和AvroRecorderSetWriter。
SplitRecord Processor中并沒有修改Flowfile的格式,僅將從整個CSV中獲取的的Flowfile按行分割為每行一條。
UpdateRecord Processor屬性設置中選擇Record Writer為JsonRecordSetWriter將數據格式轉換為json,添加source字段,source的值為屬性值sheetname,標明數據來源。
測試環境的ES版本為2.4.3,所以選擇PutElasticsearch Processor將json數據導入ES,若ES版本為5.0以上,選擇PutElasticsearch5處理器進行數據導入。
PutElasticsearch Processor需要指定ES的集群名、主機地址及端口號、ES的index、ES的type等屬性。
配置完各組件后即可啟動組件進行數據導入,可以在NIFI的畫布頁面實時查看數據導入情況,也可以通過es接口查詢數據導入情況,正確導入ES的數據如下圖head插件所示。
Reference
https://nifichina.github.io/
https://nifi.apache.org/
總結
以上是生活随笔為你收集整理的sql导入excel数据失败_nifi入门从Excel数据导入ES开始的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python定义构造函数、包括颜色价格品
- 下一篇: python redis模块connec