如何将Delta Lake元数据接入Amundsen数据发现引擎及问题排查
问题解答
一、cluster_key和database参数填写规范
- cluster_key:自定义的Delta集群唯一标识,作用是区分Amundsen中接入的不同数据源集群,你可以按照自身环境命名规则填写,比如测试环境填
delta_test_cluster,生产环境填delta_prod_cluster,示例中的my_delta_environment仅为占位值,无固定强制要求,只要不和其他接入的集群标识重复即可。 - database:Amundsen中展示的Delta数据源数据库层级名称,如果你是对接存储Delta元数据的Hive metastore,这里可以填Hive中对应的库名;如果没有绑定特定Hive库,也可以自定义便于识别的名称,比如
delta_business_db,该值仅作为前端展示的分层标识使用。
二、运行无报错但无数据的排查方案
第一步:先判断问题环节
脚本执行过程中会先把提取到的元数据写入本地临时目录/var/tmp/amundsen/table_metadata,你可以先检查该目录下nodes和relationships两个子文件夹的内容:
- 如果文件夹为空/CSV文件内容为空:问题出在元数据提取环节,继续看第二部分排查
- 如果CSV文件有正常的表、字段等元数据内容:问题出在Neo4j写入环节,检查以下配置:
- 确认
NEO4J_ENDPOINT、neo4j_user、neo4j_password和你部署Amundsen时对接的Neo4j配置完全一致 - 确认运行脚本的服务器可以正常访问Neo4j的7687端口,无防火墙限制
- 确认Neo4j服务运行正常,有写入权限
- 确认
第二步:提取环节问题排查
- 确认运行脚本的环境是配置了Hive metastore的Spark环境,脚本不能在普通Python环境中运行,你可以在Spark初始化后增加一行测试代码
spark.sql("show schemas").show(),验证能否正常列出Delta表所在的schema - 检查
schema_list和exclude_list配置:如果要同步全量schema,直接把两个参数都设为[],避免配置的schema不存在、或者目标schema被加入排除列表导致无数据返回 - 确认你要同步的Delta表已经在Spark catalog中注册,未注册、仅存放在文件系统路径的Delta表无法被该提取器识别,需要先执行
CREATE TABLE语句关联Delta文件路径后再同步 - 检查
job_publish_tag参数是否为唯一值,和历史同步任务的标签重复会导致发布环节跳过数据写入
第三步:Amundsen端验证
如果已经确认Neo4j中有写入的Delta表元数据,去Amundsen UI直接搜索表的完整名称,不要仅依赖首页展示,首页默认仅展示最近更新的少量数据,刚同步的元数据可能需要等待缓存刷新后才会在首页展示。
内容的提问来源于stack exchange,提问作者Praghadeesh Thevendria
相关产品推荐
相关产品推荐

