全部產品
Search
文件中心

Hologres:Apache Nifi

更新時間:Jun 30, 2024

本文以一個樣本為您介紹Apache Nifi如何串連Hologres。

背景資訊

Apache NiFi是一個易用、可靠的資料處理與分發系統,Apache NiFi的設計目標是自動化管理系統間的資料流。Apache Nifi是一個基於WEB-UI使用者介面,具有很強互動性和易用性,為不同系統間或系統內提供資料流管理與處理的系統。

前提條件

擷取本地JSON檔案寫入Hologres

擷取本地JSON檔案寫入Hologres的流程如下圖所示。流程圖
  1. GetFile:讀取JSON格式的檔案。
  2. ConvertJSONToSQL:將JSON中的元素轉化為SQL中的Insert語句。
  3. PutSQL:執行上一個Processor產生的SQL語句,將JSON中的元素插入到資料庫中。
  1. 建立資料庫和表
    1. 登入Hologres執行個體,並且建立資料庫,命名為demo,詳情請參見建立資料庫
    2. 建立資料表。
      使用如下SQL建立資料表,之後會將資料寫入該表中。
      DROP TABLE IF EXISTS user_info;
      
      CREATE TABLE IF NOT EXISTS user_info (
          id int,
          first_name text,
          last_name text,
          email text
      );
  2. 配置GetFile Processor
    1. 添加一個GetFile Processor。
      詳情請參見Adding a Processor
    2. 填寫JSON檔案存放的地址。
      在PROPERTIES選項卡中的Input Directory中填寫JSON檔案存放的地址,例如我們將JSON檔案存放在Apache Nifi伺服器的/opt/nifi/nifi-current/file_source位置,檔案名稱為user_info.json檔案內容如下。
      {
          "id": 1,
          "first_name": "Sig",
          "last_name": "Olivo",
          "email": "solivo0@blinklist.com"
      }
      配置範例如下所示。getfile processor
    3. 單擊APPLY儲存配置。
  3. 配置ConvertJSONToSQL Processor
    1. 添加一個ConvertJSONToSQL Processor。
    2. 在JDBC Connection Pool中增加一個Service,選擇Compatible Controller ServicesDBCPConnectionPool,並且設定Controller Service Name,此處設定為hologres
      addcontrollerservice
    3. 單擊JDBC Connection Pool行最右側的向右箭頭按鈕,開始配置連接字串。
    4. 從中找到剛才建立的DBCPConnectionPool,單擊設定按鈕。
      設定DBCP
    5. 在設定頁面的PROPERTIES選項卡中配置如下參數。
      propertioes
      參數名稱描述說明
      Database Connection URL串連Hologres執行個體的JDBC連接字串格式為:jdbc:postgresql://<endpoint>/<database name>,例如jdbc:postgresql://hgpostcn-cn-xxxxxxxxxxx-cn-shanghai.hologres.aliyuncs.com:80/demo其中Endpoint需要使用公網或者VPC的Endpoint,進入Hologres管理主控台的執行個體詳情頁擷取Endpoint。
      Database Driver Class Nameorg.postgresql.Driver不涉及
      Database Driver Location(s)PostgreSQL的JDBC存放地址,例如/opt/nifi/nifi-current/jdbc_driver/postgresql-42.3.4.jar您可以從PostgreSQL官網下載JDBC,推薦使用42.2.25以上版本的JDBC。
      Database User當前阿里雲帳號的AccessKey ID。您可以單擊AccessKey 管理,擷取AccessKey ID。
      Password當前帳號的AccessKey Secret。您可以單擊AccessKey 管理,擷取AccessKey Secret。
    6. 單擊OK完成配置。
    7. 單擊ENABLE啟動該服務。
    8. 回到最初的ConvertJSONToSQL Processor,選擇修改如下參數,更多說明請參見官方手冊
      參數名稱描述
      Statement Type需要執行的SQL語句,該樣本中使用INSERT
      Table Name需要寫入資料的表名稱,該樣本中使用user_info
      Schema Name需要寫入資料的表的Schema名稱,該樣本中使用public
    9. 單擊APPLY完成配置。
  4. 配置PutSQL Processor
    1. 添加一個PutSQL Processor。
    2. JDBC Connection Pool設定為上一步配置的DBCPConnectionPool,該案例中DBCPConnectionPool名稱為hologres
    3. Support Fragmented Transactions置為false
    4. 單擊APPLY完成配置。
  5. 開始寫入資料
    至此,您就完成了所有配置,將所有節點置為運行狀態,Nifi即開始讀取JSON檔案寫入Hologres。開始寫入資料
  6. 查詢資料
    使用如下命令在Hologres中查詢user_info表,即可看到寫入的資料。
    SELECT * FROM user_info;
    查詢結果如下。查詢結果