Kettle之Neo4j插件

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 初始化数据加载导入(不支持Neo4j v3.x 及之后的版本数据库)
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查询更快地导入数据;

导入数据之前,确保 Neo4j 数据库实例没有运行neo4j-import 直接操作数据库的存储文件,因此如果数据库正在运行,可能会导致数据损坏或其他不可预见的问题。

注意社区版没有权限创建数据库,会使用失败;

注意:在 Neo4j v3.x 及之后的版本,neo4j-import命令行工具已作废,故该组件不支持Neo4j v3.x 及其之后的版本

  • 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)输出字段
posted @ 2024-03-23 18:20  巫安生  阅读(260)  评论(1编辑  收藏  举报