Nebula Exchange 工具 Hive 数据导入的踩坑之旅

ywz888
发布于 2022-10-11 13:55
浏览
0收藏

本文由社区用户 xrfinbj 贡献,主要介绍 Exchange 工具从 Hive 数仓导入数据到 Nebula Graph 的流程及相关的注意事项。




01 背景 



公司(望石智慧)内部有使用图数据库的场景,内部通过技术选型确定了 Nebula Graph 图数据库,还需要验证 Nebula Graph 数据库在实际业务场景下的查询性能。所以,我们急迫地需要导入数据到 Nebula Graph 并验证。在这个过程中发现通过 Exchange 工具从 Hive 数仓导入数据到 Nebula Graph 文档不是很全,所以把这个流程中踩到的坑记录下来,回馈社区,避免后人走弯路。

本文主要基于我之前发在论坛的 2 篇帖子:

  • exchange 如何导入 hive 数据问题
  • exchange 执行从 hive 导入数据报错




02 环境信息 



  • Nebula Graph 版本:nebula:nightly

  • 部署方式(分布式 / 单机 / Docker / DBaaS):Mac 电脑 Docker 部署
  • 硬件信息
  • 磁盘(SSD / HDD):Mac 电脑 SSD

  • CPU、内存信息:16 G
  • 数仓环境(Mac 电脑搭建的本地数仓):

  • Hive 3.1.2

  • 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.




03 配置



1、Nebula Graph DDL

Nebula Exchange 工具 Hive 数据导入的踩坑之旅-鸿蒙开发者社区

2、Hive DDL

Nebula Exchange 工具 Hive 数据导入的踩坑之旅-鸿蒙开发者社区

3、我的最新 nebula_application.conf 文件

注意看 exec、fields、nebula.fields、vertex、source、target 字段映射

Nebula Exchange 工具 Hive 数据导入的踩坑之旅-鸿蒙开发者社区

Nebula Exchange 工具 Hive 数据导入的踩坑之旅-鸿蒙开发者社区



04 执行导入



4.1 确保 nebula 服务启动

4.2 确保 Hive 表和数据就绪

4.3 执行 spark-sql cli 查看 Hive 表以及数据是否正常以确保 Spark 环境没问题

Nebula Exchange 工具 Hive 数据导入的踩坑之旅-鸿蒙开发者社区

4.4 一切配置工作就绪后,执行 Spark 命令:

Nebula Exchange 工具 Hive 数据导入的踩坑之旅-鸿蒙开发者社区

4.5 导入成功后 可以借助 db_dump 工具查看导入数据量 验证正确性

Nebula Exchange 工具 Hive 数据导入的踩坑之旅-鸿蒙开发者社区



05 踩坑以及说明



  • 第一个坑就是 spark-submit 命令没有加 -h 参数
  • Nebula Graph 中 tagName 是大小写敏感的,tags 的配置中 name 配置的应该是 Nebula Graph 的 tag 名
  • Hive的 int 和 Nebula Graph 的 int 不一致,Hive 里面的 bigint 对应 Nebula Graph 的 int

其他说明:

  • 用 Spark 2.4 从 Hive 2(Hadoop 2)中导入数据到 Nebula Graph

  • 用 Spark 2.4 从 Hive3(Hadoop3)中导入数据到 Nebula Graph

说明:Exchange 目前还不支持 Spark 3,编译后运行报错,所以没法验证 Spark 3 环境

还有一些疑问

  • nebula_application.conf 文件的参数 batch 和 rate.limit 应该如何设置?参数如何抉择?
  • Exchange 工具 Hive 数据导入原理(Spark 这块我也是最近现学现用)




06 Exchange 源码 Debug



Spark Debug 部分参考博客:https://dzone.com/articles/how-to-attach-a-debugger-to-apache-spark

通过 Exchange 源码的学习和 Debug 能加深对 Exchange 原理的理解,同时也能发现一些文档描述不清晰的地方,比如 导入 SST 文件(可阅读原文查看对应链接)和 Download and Ingest(可阅读原文查看对应链接)只有结合源码看才能发现文档描述不清晰逻辑不严谨的问题。

通过源码 Debug 也能发现一些简单的参数配置问题。

进入正题:

步骤一:

Nebula Exchange 工具 Hive 数据导入的踩坑之旅-鸿蒙开发者社区

步骤二:

Nebula Exchange 工具 Hive 数据导入的踩坑之旅-鸿蒙开发者社区

步骤三:IDEA 配置

Nebula Exchange 工具 Hive 数据导入的踩坑之旅-鸿蒙开发者社区

步骤四:在 IDEA 里面点击 Debug

Nebula Exchange 工具 Hive 数据导入的踩坑之旅-鸿蒙开发者社区



07 建议与感谢





感谢 vesoft 提供了宇宙性能最强的 Nebula Graph 图数据库,能解决业务中很多实际问题,中途这点痛不算什么(看之前的分享,360 数科他们那个痛才是真痛)。中途遇到的问题都有幸得到社区及时的反馈解答,再次感谢。

很期待 Exchange 支持 Nebula Graph 2.0

参考资料



文章转载自公众号:Nebula Graph Community

分类
标签
已于2022-10-11 13:55:20修改
收藏
回复
举报
回复
    相关推荐