摘要:本文由社区用户 xrfinbj 贡献,主要介绍 Exchange 工具从 Hive 数仓导入数据到 Nebula Graph 的流程及相关的注意事项。
1 背景
公司内部有使用图数据库的场景,内部通过技术选型确定了 Nebula Graph 图数据库,还需要验证 Nebula Graph 数据库在实际业务场景下的查询性能。所以急迫的需要导入数据到 Nebula Graph 并验证。在这个过程中发现通过 Exchange 工具从 hive 数仓导入数据到 Nebula Graph 文档不是很全,所以把这个流程中踩到的坑记录下来,回馈社区,避免后人走弯路。
本文主要基于我之前发在论坛的 2 篇帖子:
- exchange 如何导入 hive 数据问题
- exchange 执行从 hive 导入数据报错
2 环境信息
- Nebula Graph 版本:nebula:nightly
- 部署方式(分布式 / 单机 / Docker / DBaaS):Mac 电脑 Docker 部署
- 硬件信息
- 磁盘(SSD / HDD):Mac 电脑 SSD
- CPU、内存信息:16 G
- 数仓环境(Mac 电脑搭建的本地数仓):
- Hive 3.1.2
- Hadoop 3.2.1
- Exchange 工具:https://github.com/vesoft-inc/nebula-java/tree/v1.0/tools/exchange
编译后生成 jar 包
- Spark spark-2.4.7-bin-hadoop2.7 (conf 目录下配置 Hadoop 3.2.1 对应的 core-site.xml,hdfs-site.xml,hive-site.xml 设置 spark-env.sh) Scala code runner version 2.13.3 -- Copyright 2002-2020, LAMP/EPFL and Lightbend, Inc.
3 配置
1 Nebula Graph DDL
代码语言:txt复制CREATE SPACE test_hive(partition_num=10, replica_factor=1); --创建图空间,本示例中假设只需要一个副本
USE test_hive; --选择图空间 test
CREATE TAG tagA(idInt int, idString string, tboolean bool, tdouble double); -- 创建标签 tagA
CREATE TAG tagB(idInt int, idString string, tboolean bool, tdouble double); -- 创建标签 tagB
CREATE EDGE edgeAB(idInt int, idString string, tboolean bool, tdouble double); -- 创建边类型 edgeAB
2 Hive DDL
代码语言:txt复制CREATE TABLE `tagA`(
`id` bigint,
`idInt` int,
`idString` string,
`tboolean` boolean,
`tdouble` double) ROW FORMAT DELIMITED FIELDS TERMINATED BY '