You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hugegraph.apache.org by ji...@apache.org on 2026/09/26 14:21:04 UTC
(hugegraph-doc) 02/12: docs(cn): fix loader configuration and verify local import
This is an automated email from the ASF dual-hosted git repository.
imbajin pushed a commit to branch docs/sync-cn-491
in repository https://gitbox.apache.org/repos/asf/hugegraph-doc.git
commit 750abd3361f14a740538da72ed2be2a02d19e6ce
Author: imbajin <ji...@apache.org>
AuthorDate: Sat Sep 26 20:49:33 2026 +0800
docs(cn): fix loader configuration and verify local import
---
content/cn/docs/guides/toolchain-local-test.md | 4 +-
.../docs/quickstart/toolchain/hugegraph-loader.md | 61 ++++++++++++++++++++--
2 files changed, 59 insertions(+), 6 deletions(-)
diff --git a/content/cn/docs/guides/toolchain-local-test.md b/content/cn/docs/guides/toolchain-local-test.md
index 0e898518b..67ba677a8 100644
--- a/content/cn/docs/guides/toolchain-local-test.md
+++ b/content/cn/docs/guides/toolchain-local-test.md
@@ -310,7 +310,7 @@ mvn install -pl hugegraph-client,hugegraph-loader -am -Dmaven.javadoc.skip=true
#### 依赖服务
- **必需**:HugeGraph Server
-- **可选**:Hadoop (HDFS 测试)、MySQL (JDBC 测试)
+- **可选**:Hadoop (HDFS 测试)、MySQL (JDBC 测试);Kafka 测试通过 Testcontainers 启动 Kafka 容器,因此还需要可用的 Docker daemon
#### 运行测试
@@ -320,7 +320,7 @@ mvn test -P unit -ntp # 单元测试
mvn test -P file -ntp # 文件测试(需 Server)
mvn test -P hdfs -ntp # HDFS测试(需 Server + Hadoop)
mvn test -P jdbc -ntp # JDBC测试(需 Server + MySQL)
-mvn test -P kafka -ntp # Kafka测试(需 Server)
+mvn test -P kafka -ntp # Kafka 测试(需 Server + Docker daemon;测试会启动 Kafka 容器)
```
### 4.3 hugegraph-hubble
diff --git a/content/cn/docs/quickstart/toolchain/hugegraph-loader.md b/content/cn/docs/quickstart/toolchain/hugegraph-loader.md
index 5a9916bdc..8042cb7cd 100644
--- a/content/cn/docs/quickstart/toolchain/hugegraph-loader.md
+++ b/content/cn/docs/quickstart/toolchain/hugegraph-loader.md
@@ -162,7 +162,7 @@ schema.edgeLabel("knows").sourceLabel("person").targetLabel("person").ifNotExist
schema.edgeLabel("created").sourceLabel("person").targetLabel("software").ifNotExist().create();
```
-> 关于 schema 的详细说明请参考 [hugegraph-client](/docs/clients/hugegraph-client) 中对应部分。
+> 关于 schema 的详细说明请参考 [HugeGraph Java Client](/cn/docs/clients/hugegraph-client/) 中对应部分。
#### 3.2 准备数据
@@ -612,7 +612,7 @@ bin/utf8-bom-to-utf8.sh /path/to/file-or-dir
- skip: 是否跳过该输入源,由于 JSON 文件无法添加注释,如果某次导入时不想导入某个输入源,但又不想删除该输入源的配置,则可以设置为 true 将其跳过,默认为 false,非必填;
- input: 输入源映射块,复合结构
- type: 输入源类型,必须填 file 或 FILE;
- - path: 本地文件或目录的路径,绝对路径或相对于映射文件的相对路径,建议使用绝对路径,必填;
+ - path: 本地文件或目录的路径,绝对路径或相对于 Loader 进程当前工作目录的相对路径,必填;为避免工作目录不同导致找不到文件,建议使用绝对路径;
- file_filter: 从`path`中筛选复合条件的文件,复合结构,目前只支持配置扩展名,用子节点`extensions`表示,默认为"*",表示保留所有文件;
- format: 本地文件的格式,可选值为 CSV、TEXT 及 JSON,必须大写,默认为 CSV,选填;
- header: 文件各列的列名,如不指定则会以数据文件第一行作为 header;当文件本身有标题且又指定了 header,文件的第一行会被当作普通的数据行;JSON 文件不需要指定 header,选填;
@@ -710,7 +710,7 @@ schema: 必填
- bootstrap_server:kafka bootstrap server 列表,必填;
- topic:订阅的 topic,必填;
- group:Kafka 消费者组,必填;
-- from_beginning:是否从 topic 最早的 offset 开始读取(`auto.offset.reset=earliest`),否则从最新 offset 开始,默认为 false,选填;
+- from_beginning:设置 Kafka 的 `auto.offset.reset`;`true` 对应 `earliest`,`false` 对应 `latest`,默认为 `false`。该策略仅在消费组没有已提交 offset,或已提交 offset 不再有效时生效;已有有效 offset 时会从该 offset 继续读取;
- format:每条消息的格式,可选值为 CSV、TEXT 及 JSON,必须大写,必填;
- header:消息各列的列名;loader 不会从 topic 中读取表头行,因此 CSV 和 TEXT 格式必须指定,JSON 消息则不需要;
- delimiter:消息的列分隔符,仅 TEXT 格式使用,CSV 固定以`,`分隔,选填;
@@ -718,7 +718,7 @@ schema: 必填
- date_format:自定义的日期格式,默认值为 yyyy-MM-dd HH:mm:ss,选填;如果日期是以时间戳的形式呈现的,此项须写为 timestamp(固定写法);
- extra_date_formats:自定义的其他日期格式列表,默认为空,选填;列表中每一项都是一个 date_format 指定日期格式的备用日期格式;
- time_zone:置日期数据是处于哪个时区的,默认值为 GMT+8,选填;
-- skipped_line:想跳过的行,复合结构,目前只能配置要跳过的行的正则表达式,用子节点 regex 描述,默认不跳过任何行,选填;
+- skipped_line:当前 master 的 KafkaReader 未实现该过滤,配置此字段不会跳过 Kafka 消息;每条消息仍会直接交给所选格式的解析器,空行或注释行可能因此触发解析错误。需要过滤时请在写入 Kafka 前或消费侧预处理;
- batch_size:单次拉取的最大记录数(`max.poll.records`),默认为 500,选填;
- early_stop:某次从 Kafka broker 拉取的记录为空,停止任务,默认为 false,仅用于调试,选填;
@@ -934,6 +934,59 @@ bin/hugegraph-loader.sh -g {GRAPH_NAME} -f ${INPUT_DESC_FILE} -s ${SCHEMA_FILE}
脚本在设置了 `JAVA_HOME` 时使用其中的 JVM,否则使用 `PATH` 上的 `java`。它会把 `JVM_OPTS` 环境变量的内容,以及 `-Xmx10g` 和由 `lib/` 生成的 classpath 一起传给 JVM,因此需要追加 JVM 参数时可以设置 `JVM_OPTS`。日志由 `conf/log4j2.xml` 配置。
+#### 3.4.5 最小本地文件导入示例
+
+先确保 HugeGraph Server 已启动,当前用户可以访问 `DEFAULT` 图空间中的 `hugegraph` 图,并有权限创建 Schema 和写入数据。若 Server 已启用认证,在命令中增加对应的 `--username`、`--password` 或 `--token`。本例只需本地文件,不依赖 Kafka、HDFS 或 JDBC。
+
+进入解压后的 Loader 安装目录,再创建数据、Schema 和 2.0 格式的映射文件:
+
+```bash
+mkdir -p demo-loader
+
+cat > demo-loader/people.csv <<'EOF'
+docs-smoke-alice,29
+docs-smoke-bob,31
+EOF
+
+cat > demo-loader/schema.groovy <<'EOF'
+schema.propertyKey("docs_name").asText().ifNotExist().create()
+schema.propertyKey("docs_age").asInt().ifNotExist().create()
+schema.vertexLabel("docs_smoke_person").properties("docs_name", "docs_age").primaryKeys("docs_name").ifNotExist().create()
+EOF
+
+cat > demo-loader/struct.json <<'EOF'
+{
+ "version": "2.0",
+ "structs": [
+ {
+ "id": "people",
+ "input": {
+ "type": "FILE",
+ "path": "demo-loader/people.csv",
+ "format": "CSV",
+ "header": ["docs_name", "docs_age"]
+ },
+ "vertices": [
+ {"label": "docs_smoke_person"}
+ ],
+ "edges": []
+ }
+ ]
+}
+EOF
+```
+
+`people.csv` 没有表头行,列名由映射文件的 `header` 提供。映射文件中的本地路径相对于运行命令时的工作目录。仍在 Loader 安装目录中执行导入;如果 Server 在其他容器中,请把 `--host` 改为 Loader 能访问到的 Server 地址。
+
+```bash
+bin/hugegraph-loader.sh \
+ --graphspace DEFAULT --graph hugegraph \
+ --file demo-loader/struct.json --schema demo-loader/schema.groovy \
+ --host 127.0.0.1 --port 8080
+```
+
+本例用独立的 `docs_smoke_person` 标签和 `docs_*` 属性,避免与预置的 `person` 样例数据冲突。成功时统计中应显示顶点写入成功数为 `2`、边写入成功数为 `0`。也可以在 Hubble 的 Gremlin 工作台查询 `g.V().hasLabel('docs_smoke_person').values('docs_name')`,结果应包含 `docs-smoke-alice` 和 `docs-smoke-bob`。
+
### 4 完整示例
下面给出的是 hugegraph-loader 包中 example 目录下的例子。([GitHub 地址](https://github.com/apache/hugegraph-toolchain/tree/master/hugegraph-loader/assembly/static/example/file))