Kettle之Neo4j外掛

巫安生發表於2024-03-23

Neo4j外掛

下載安裝

下載地址:https://github.com/knowbi/knowbi-pentaho-pdi-neo4j-output/releases

  • 解壓檔案,放入kettle的plugins目錄中
  • 需要先刪除所有歷史/plugins/Neo4JOutput的資料夾
  • 重啟kettle使用

kettle版本外掛,已不再維護;現維護的為kettle分支hop,地址:https://github.com/apache/hop

元件清單

類別 元件名稱 簡介
JOB Check Neo4j Connections 條件欄,驗證neo4j連線是否正常
JOB Neo4j Cypher Script 指令碼欄,執行Cypher語句
TRANS Neo4J Output 插入或更新Neo4j資料庫中的節點和關係
TRANS Neo4j Cypher 執行 Cypher 語句
TRANS Neo4j Generate CSVs 生成並匯出csv檔案
TRANS Neo4j Graph Output 透過模板方式插入或更新Neo4j資料庫
TRANS Neo4j Import 初始化資料載入匯入
TRANS Neo4j Split Graph 切分圖,將大圖切分成單個小的圖

Check Neo4j Connections 元件

驗證neo4j連線是否正常

  • 需要預先配置Neo4j的連線資訊
  • 該元件無法建立連線,需要透過其他元件建立,如Neo4j Cypher Script 元件
  • 可配置多個,但只要有一個相簿無法連線則報錯
  • 控制流程,失敗則不進行後續操作

Neo4j Cypher Script 元件

執行Cypher語句

  • 可新建、編輯 neo4j 連線資訊,無法刪除
  • 可選擇使用變數替換
  • 只能執行單條語句,不能進行多條Cypher 語句

Neo4j Output 元件

插入或更新Neo4j資料庫中的節點和關係

  • 允許插入或更新 一個節點兩個節點節點節點和關係 ,節點和關係可以具有屬性
  • 源節點(目標節點)標籤名Label的內容必須一致,如果存在不一樣的值會導致標籤錯亂
  • 若是需要相同節點不重複建立,在節點配置中必須指定Primary 屬性

整體配置

  • Neo4j Connection :選擇、新建、編輯 neo4j 連線資訊,無法刪除
  • Batch size :批次大小,將定義的記錄數分組到單個事務中執行
  • Create indexes :建立索引,為節點中所有 Primary 屬性建立唯一約束,在處理關係的Merge和查詢節點時保持良好的效能。(不允許重複,如果勾選,謹慎使用Use CREATE instead of Merge 選項,容易出現主鍵衝突無法匯入的情況);
  • Use CREATE instead of Merge :使用CREATE 代替 Merge
    • 選擇此項繞過了查詢,速度更快;
    • 生成一個 UNWIND 語句,將記錄組合在一起以獲得更好的效能
    • 不使用任何事務,只使用隱式事務(自動提交);
    • 選擇此項無論什麼情況都會建立新的節點;
  • Only create relationships :是否僅建立節點關係
    • 選擇後,節點資訊不會更新;
    • 源節點和目標節點的 Perform lookups only,do not update the "from" nodes 選項不可用
  • Return graph data :是否返回圖資料,選中後,將不會在圖資料庫建立節點和關係,僅輸出圖資料
    • 勾選此項後,僅 Graph output field name 選項有效,整體配置 的選項都不可用
    • 圖資料為JSON格式,內容為節點、關係配置項的資料資訊
  • Graph output field name :節點圖輸出名稱
    • 必須勾選 Return graph data 此選項才可用,並且可修改

源節點配置

  • Perform lookups only,do not update the "from" nodes :僅查詢不更新節點資訊
    • 此配置無效,不論選中與否,節點屬性都會變更
    • 整體配置中勾選了Only create relationships,該選項不可選
  • From Labels :源節點標籤
    • From Label Fields :標籤名稱的欄位列(資料流傳入欄位),值作為節點標籤名稱,所有行的值必須都相同,否則會導致相簿中標籤錯亂
    • From Label Values :源節點標籤名稱預設值(From Label Fields 為空時使用此值);
  • From Property :源節點屬性
    • From Properties Fields :屬性欄位列(資料流傳入欄位);
    • Properties Name :源節點屬性名稱的欄位列
      • 列名作為屬性名,值作為屬性值
      • From Properties Fields欄位列存在下劃線,預設獲取欄位時會採用駝峰命名規則
    • type :屬性值型別
    • Primary :是否主鍵,判斷節點是否Merge的標識

目標節點配置

  • Perform lookups only,do not update the "to" nodes :僅查詢不更新節點資訊
    • 此配置無效,不論選中與否,節點屬性都會變更
    • 整體配置中勾選了Only create relationships,該選項不可選
  • To Labels :目標節點標籤
    • To Label Fields :標籤名稱的欄位列(資料流傳入欄位),值作為節點標籤名稱,所有行的值必須都相同,否則會導致相簿中標籤錯亂
    • To Label Values :目標節點標籤名稱預設值(To Label Fields 為空時使用此值)
  • To Property :源節點屬性
    • To Properties Fields :屬性欄位列(資料流傳入欄位)
    • Properties Name :目標節點屬性名稱的欄位列
      • 列名作為屬性名,值作為屬性值
      • To Properties Fields欄位列名存在下劃線,預設獲取欄位時會採用駝峰命名規則
    • type :屬性值型別
    • Primary :是否主鍵,判斷節點是否Merge的標識

關係配置

  • Relationship filed :關係型別名稱的欄位(資料流傳入欄位),值作為關係型別名稱,所有行的值必須都相同,否則會導致相簿中標籤錯亂
  • Relationship value :關係型別名稱預設值(Relationship filed 為空時使用此值);
  • Relationship properties :關係屬性
    • Relationship Properties :屬性欄位列(資料流傳入欄位)
    • Properties Property name :關係屬性名稱的欄位列
      • 列名作為屬性名,值作為屬性值
      • 資料流欄位列名存在下劃線,預設獲取欄位時會採用駝峰命名規則
    • Property type :屬性值型別

Neo4j Cypher 元件

執行 Cypher 語句

作業中的 Neo4j Cypher Script 元件不能傳遞資料流,本元件可傳遞資料流

整體配置

  • Neo4j Connection :選擇、新建、編輯 neo4j 連線資訊,無法刪除

  • Batch size :批次大小,將定義的記錄數分組到單個事務中執行

  • Read only statement :只讀語句,勾選此項只能執行查詢語句,執行插入更新語句會報錯

  • Retry connecting after disconnection :連線中斷重連

  • Get Cypher from input field :從輸入欄位獲取Cypher語句(與Cypher 選項互斥)

    • Cypher input field :Cypher語句欄位
  • Cypher :執行語句(與Get Cypher from input field 選項互斥)

  • Collect parameter values map :收集引數值,將所有行新增到列表中並將其傳遞給 UNWIND 語句(必須在引數列表中選擇入參欄位)

    • Name of values map list :引數Map值的欄位名稱,如設定為params
    • 例: UNWIND $params AS p match (n:TL {id:p.id}) return n.name as name
    • 例: UNWIND $params AS p CREATE (n:TL {id:p.id,name:p.name})
  • Return graph data :返回圖資料,選中後僅輸出圖資料

    • 勾選此項後,Graph output field name 選項有效
    • Graph output field name :節點圖輸出欄位名稱
    • 下一個步驟可連線 Neo4j Generate CSVs 元件 ,用於匯出圖資料

入參配置 Parameters

  • Parameter :引數名稱,需配合Cypher 語句使用,合併成Map
  • Field :資料流欄位
  • Neo4j Type :相簿中資料型別

返回值配置 Returns

  • Field Name :欄位名稱(相簿中返回的欄位名稱)

    • 若查詢語句返回值帶符號,此次也必須帶符號
    • 例:match (n:TL) return n.name 語句返回需配置為 n.name
    • 例:match (n:TL) return n.name as rname 語句返回需配置為 rname
  • Return Type :返回值型別(輸出到下一個步驟的資料型別)

  • Source Type :來源型別(相簿中的資料型別)

Neo4j Generate CSVs 元件

匯出csv檔案

  • graph field :傳遞圖形資料的欄位(從上一步選擇)
  • base folder (below import/folder) :檔案目錄(匯出的csv檔案在 檔案目錄/import 下)
  • csv files prefix :csv檔案字首
  • node/relationships uniqueness strategy :節點或關係唯一性策略
    • 選項不起作用,暫未發現其他作用
  • filename field :匯出檔案的欄位名
    • 輸出內容規則:import/字首-相簿型別-轉換名-前一個步驟名-相簿名-序號.csv
    • 輸出內容例子:import/prefix-nodes-export_csv_neo4j-Neo4j Cypher-TL-0.csv
  • file type field :匯出檔案型別的欄位名
    • 節點型別:Nodes
    • 關係型別:Relationships

Neo4j Graph Output 元件

透過模板方式插入或更新Neo4j資料庫

用的比較少,累了,過段時間再更新

Neo4j Import 元件

初始化資料載入匯入,慎用

實際上是呼叫Neo4j 資料庫的neo4j-import命令列工具,用於高效地將大量資料匯入 Neo4j 圖形資料庫。適用於初始資料載入或大規模資料遷移,因為它能夠比Cypher查詢更快地匯入資料;

注意:使用該元件會先刪除資料庫再重新建立,但是社群版沒有許可權建立資料庫,會使用失敗

  • filename field :匯出檔案的欄位名(資料流獲取)
  • file type field :匯出檔案型別的欄位名(資料流獲取)
  • database filename :圖資料庫檔名稱
  • neo4j-admin command path :neo4j管理命令的路徑
  • base folder (below import/folder) :檔案目錄(檔案需在 檔案目錄/import 下)
  • Max Memory :最大記憶體
  • High IO :最高IO
  • Ignore Duplicate Nodes :忽略重複的節點
  • Ignore Missing Nodes :忽略丟失的節點
  • Ignore Extra Columns :忽略多餘的列
  • Fields Can Have Multi-line Data :欄位可以具有多行資料
  • Skip Bad Relationships :跳過不良關係
  • Read Buffer Size :讀取緩衝區大小

Neo4j Split Graph 元件

切分圖

將大的圖拆分成單個節點或者單個關係的小圖

  • Graph field :傳遞圖形資料的欄位(從上一步選擇)
  • Type output field (Node/Relationship) :型別輸出欄位(節點/關係)
    • 節點型別:Nodes
    • 關係型別:Relationships
  • ID output field :ID輸出欄位
  • Property set output field :標籤(Lable)輸出欄位

相關文章