跳到主要内容
版本:Next

HugeGraph Sink Connector

Sink: HugeGraph

描述

HugeGraph sink连接器允许您将数据从SeaTunnel写入Apache HugeGraph,这是一个快速且可扩展的图数据库。

该连接器支持将数据作为顶点或边写入,提供了从关系数据模型到图结构的灵活映射。它专为高性能数据加载而设计。

特性

  • 批量写入: 数据分批写入,以实现高吞吐量。
  • 灵活映射: 支持将源字段灵活映射到顶点/边属性。
  • 顶点和边写入: 可以将数据作为顶点或边写入。
  • 自动创建Schema: 如果不存在,可以自动创建图Schema元素(属性键、顶点标签、边标签)。

配置选项

名称类型是否必须默认值描述
hostString-HugeGraph服务器的主机。
portInteger-HugeGraph服务器的端口。
graph_nameString-要写入的图的名称。
graph_spaceString-要操作的图的图空间。
usernameString-用于HugeGraph身份验证的用户名。
passwordString-用于HugeGraph身份验证的密码。
batch_sizeInteger500在单批次写入HugeGraph之前缓冲的记录数。
batch_interval_msInteger5000刷新批次前等待的最大时间(毫秒)。
max_retriesInteger3重试失败写入操作的最大次数。
retry_backoff_msInteger5000重试之间的退避时间(毫秒)。

Sink选项

名称类型是否必须默认值描述
schema_configObject-将输入数据映射到HugeGraph的Schema(顶点或边)的配置。
selected_fieldsList-要从输入数据中选择的字段列表。如果未指定,将使用所有字段。
ignored_fieldsList-要从输入数据中忽略的字段列表。与selected_fields互斥。

Schema配置 (schema_config)

schema_config列表中的每个对象都定义了从源数据到HugeGraph中特定顶点或边标签的映射。

名称类型是否必须默认值描述
typeString-要映射到的图元素的类型。必须是VERTEXEDGE
labelString-HugeGraph中顶点或边的标签。
propertiesList<String>-顶点或边的源字段名称列表。
ttlLong-顶点或边的生存时间(秒)。
ttlStartTimeString-TTL的开始时间。
enableLabelIndexBooleanfalse是否为此标签启用标签索引。
userdataMap<String, Object>-与标签关联的用户定义数据。
idStrategyString对于顶点-顶点的ID生成策略。支持的值:PRIMARY_KEYCUSTOMIZE_UUIDAUTOMATIC
idFieldsList<String>对于顶点-用于生成顶点ID的源字段名称列表。
sourceConfigObject对于边-定义边的源顶点映射的对象。请参阅下面的Source/Target Config
targetConfigObject对于边-定义边的目标顶点映射的对象。请参阅下面的Source/Target Config
frequencyString对于边-边的频率,例如SINGLEMULTIPLE
mappingObject-定义高级字段和值映射的对象。请参阅下面的Mapping Config

Source/Target配置 (sourceConfigtargetConfig)

此对象在EDGE Schema中使用,用于定义如何识别源顶点和目标顶点。

名称类型是否必须默认值描述
labelString-源或目标顶点的标签。
idFieldsList<String>-用于构造源/目标顶点ID的输入行中的源字段名称列表。这些值将被连接起来形成顶点ID。

Mapping配置 (mapping)

此对象提供对字段和值如何映射到属性的高级控制。

名称类型是否必须默认值描述
fieldMappingMap<String, String>-一个映射,其中键是源字段名,值是HugeGraph中的目标属性名。如果未指定,则使用源字段名作为目标属性名。
valueMappingMap<Object, Object>-用于转换特定字段值的映射。键是源的原始值,值是要写入的新值。
nullableKeysList<String>-可以具有null值的属性键列表。
nullValuesList<String>-应被视为null的字符串值列表。任何包含这些值的字段都不会被写入。
dateFormatStringyyyy-MM-dd用于解析日期字符串的日期格式。
timeZoneStringGMT+8用于日期解析的时区。
sortKeysList<String>对于边-用于对具有相同源和目标顶点的边进行排序的属性键列表。

使用示例

1. 写入顶点

此示例展示了如何从FakeSource读取数据并将person顶点写入HugeGraph。顶点ID基于name字段。

env {
job.mode = "BATCH"
}

source {
FakeSource {
plugin_input = "fake_source"
schema = {
fields = {
name = "string"
age = "int"
}
}
}
}

sink {
HugeGraph {
host = "localhost"
port = 8080
graph_name = "hugegraph"
graph_space = "default"
selected_fields = ["name", "age"]
schema_config = {
type = "VERTEX"
label = "person"
idStrategy = "PRIMARY_KEY"
idFields = ["name"]
properties = ["name", "age"]
}
}
}

2. 写入边

此示例将一个关系表同步为HugeGraph中的knows边。源表包含相互认识的两个人的姓名以及他们相识的年份。

env {
job.mode = "BATCH"
}

source {
FakeSource {
plugin_input = "fake_source"
schema = {
fields = {
person1_name = "string"
person2_name = "string"
since = "int"
}
}
}
}

sink {
HugeGraph {
host = "localhost"
port = 8080
graph_name = "hugegraph"
graph_space = "default"
schema_config = {
type = "EDGE"
label = "knows"
sourceConfig = {
label = "person"
idFields = ["person1_name"]
}
targetConfig = {
label = "person"
idFields = ["person2_name"]
}
properties = ["since"]
mapping = {
fieldMapping = {
person1_name = "name"
person2_name = "name"
}
}
}
}
}

Changelog

Change Log
ChangeCommitVersion
[Feature][Connector-V2] Support sink connector for Apache HugeGraphhttps://github.com/apache/seatunnel/pull/10002/commits/002a653d11f48c3f76b47db23f5f2a68bc9d690c2.3.12