开源软件Datahub中文社区
微信号:DatahubCN
QQ群:528386897
Datahub元数据集成1-通过CLI集成
-
集成选项
数据中心支持两者基于推送和基于拉动元数据集成。
基于推送的集成允许您在元数据更改时直接从数据系统发出元数据,而基于拉取的集成允许您通过连接到数据系统并以批处理或增量方式提取元数据来从数据系统中“爬网”或“摄取”元数据。支持这两种机制意味着您可以以最灵活的方式与所有系统集成。
基于推送的集成示例包括气流,火花,远大的期望和Protobuf Schemas.这允许您从数据生态系统中的“活动”代理获得低延迟元数据集成。基于拉取的集成示例包括BigQuery,Snowflake,Looker,Tableau等。
本文档介绍 DataHub 中内置的基于拉取的元数据摄取系统,以便与数据堆栈中的各种源轻松集成。
开始
先决条件
在运行任何元数据引入作业之前,应确保 DataHub 后端服务全部正在运行。可以通过用户界面或通过命令行界面.您可以在浏览此页面时参考那里提供的 CLI 使用指南。
核心概念
来源
请参阅我们的“集成”页面浏览我们的摄取源并筛选其功能。
我们从中提取元数据的数据系统称为来源.这
Sources
边栏中左侧的选项卡显示可用于从中摄取元数据的所有源。例如,我们有来源大查询,美人,画面等等。元数据引入源状态
我们将支持状态应用于每个元数据源,以帮助您一目了然地了解集成可靠性。
:认证来源经过充分测试,并被DataHub社区广泛采用。我们希望集成是稳定的,很少有面向用户的问题。
:孵化源已准备好采用数据中心社区,但尚未针对各种边缘情况进行测试。我们热切地征求社区的反馈意见,以加强连接器;将来的版本中可能会出现次要版本更改。
:测试源可供DataHub社区成员试用,但如有更改,恕不另行通知。
汇
接收器是元数据的目标。为 DataHub 配置引入时,可能会通过REST (datahub-sink)或Kafka (datahub-kafka)沉。在某些情况下,文件接收器还有助于在调试期间存储元数据的持久脱机副本。
大多数引入系统和指南假定的默认接收器是
datahub-rest
水槽,但您也应该能够将它们全部适应其他水槽!食谱
配方是将它们组合在一起的主要配置文件。它告诉我们的引入脚本从何处(源)提取数据以及将数据放在何处(接收器)。
:::提示
命名您的食谱**.dhub.yaml**扩展点喜欢myrecipe.dhub.yaml使用 VSCoD 或 IntelliJ 作为具有自动完成功能的配方编辑器
和语法验证。确保为您的编辑器安装了 yaml 插件:
- 对于 vscode 安装Redhat的yaml插件
- 对于智能安装官方 yaml 插件
:::
因为
acryl-datahub
版本>=0.8.33.2
,则默认接收器假定为数据中心 REST 终结点:- 托管在“http://localhost:8080”或环境变量
${DATAHUB_GMS_URL}
如果存在 - 使用空的身份验证令牌或环境变量
${DATAHUB_GMS_TOKEN}
如果存在。
下面是一个简单的方法,它从 MSSQL(源)中提取元数据并将其放入默认接收器(数据中心休息)。
# The simplest recipe that pulls metadata from MSSQL and puts it into DataHub # using the Rest API. source: type: mssql config: username: sa password: ${MSSQL_PASSWORD} database: DemoData # sink section omitted as we want to use the default datahub-rest sink
运行此配方非常简单:
datahub ingest -c recipe.dhub.yaml
或者,如果要覆盖默认终结点,可以在命令中提供环境变量,如下所示:
DATAHUB_GMS_URL="https://my-datahub-server:8080" DATAHUB_GMS_TOKEN="my-datahub-token" datahub ingest -c recipe.dhub.yaml
许多食谱包含在示例/食谱目录。有关每个源和接收器的完整信息和上下文,请参阅插件表.
请注意,一个配方文件只能有 1 个源和 1 个接收器。如果你想要多个来源,那么你将需要多个食谱文件。
处理配方中的敏感信息
我们在配置中自动扩展环境变量(例如
${MSSQL_PASSWORD}
),
类似于 GNU bash 或 docker-compose 文件中的变量替换。有关详细信息,请参阅
https://docs.docker.com/compose/compose-file/compose-file-v2/#variable-substitution。此环境变量替换应用于屏蔽配方文件中的敏感信息。只要您可以将 env 变量安全地引入过程,就无需在配方中存储敏感信息。CLI 用于引入的基本用法
pip install 'acryl-datahub[datahub-rest]' # install the required plugin datahub ingest -c ./examples/recipes/mssql_to_datahub.dhub.yml
这
--dry-run
选项ingest
命令执行除写入接收器之外的所有引入步骤。这对于验证
引入配方在将元数据事件引入数据中心之前生成所需的元数据事件。# Dry run datahub ingest -c ./examples/recipes/example_to_datahub_rest.dhub.yml --dry-run # Short-form datahub ingest -c ./examples/recipes/example_to_datahub_rest.dhub.yml -n
这
--preview
选项ingest
命令执行所有引入步骤,但将处理限制为仅源生成的前 10 个工作单元。
此选项有助于对引入配方进行快速的端到端烟雾测试。# Preview datahub ingest -c ./examples/recipes/example_to_datahub_rest.dhub.yml --preview # Preview with dry-run datahub ingest -c ./examples/recipes/example_to_datahub_rest.dhub.yml -n --preview
默认情况下
--preview
创建 10 个工作单元。但是,如果您想尝试生产更多的工作单元,您可以使用另一种选择--preview-workunits
# Preview 20 workunits without sending anything to sink datahub ingest -c ./examples/recipes/example_to_datahub_rest.dhub.yml -n --preview --preview-workunits=20
报告
默认情况下,CLI 会向 DataHub 发送引入报告,以便你在 UI 中查看所有基于 cli 的引入的结果。这可以通过
--no-default-report
旗。# Running ingestion with reporting to DataHub turned off datahub ingest -c ./examples/recipes/example_to_datahub_rest.dhub.yaml --no-default-report
这些报告包括用于引入的配方。可以通过向摄取配方添加附加部分来关闭此功能。
source: # source configs sink: # sink configs # Add configuration for the datahub reporter reporting: - type: datahub config: report_recipe: false
转换
如果要在数据到达引入接收器之前对其进行修改(例如,添加其他所有者或标记),可以使用转换器编写自己的模块并将其与 DataHub 集成。变压器需要使用新部分来扩展配方,以描述要运行的变压器。
例如,从 MSSQL 引入元数据并将默认“重要”标记应用于所有数据集的管道如下所述:
# A recipe to ingest metadata from MSSQL and apply default tags to all tables source: type: mssql config: username: sa password: ${MSSQL_PASSWORD} database: DemoData transformers: # an array of transformers applied sequentially - type: simple_add_dataset_tags config: tag_urns: - "urn:li:tag:Important" # default sink, no config needed
查看变压器指南详细了解如何使用 Transformers 创建真正灵活的管道来处理元数据!
用作库 (SDK)
在某些情况下,你可能希望直接构造元数据事件,并使用编程方式将该元数据发送到 DataHub。在这种情况下,请查看蟒蛇发射器和Java 发射器可以从您自己的代码调用的库。
程序化管道
在某些情况下,你可能希望完全从自定义 Python 脚本中配置和运行管道。下面是如何执行此操作的示例。
- programmatic_pipeline.py- 一个基本的 mysql 到 REST 编程管道。
发展
兼容性
数据中心服务器使用 3 位版本控制方案,而 CLI 使用 4 位方案。例如,如果您使用的是 DataHub 服务器版本 0.10.0,则应使用 CLI 版本 0.10.0.x,其中 x 是修补程序版本。
我们这样做是因为我们发布 CLI 的频率比服务器发布的频率高得多,通常每隔几天发布一次,而不是每月发布两次。对于引入源,任何重大更改都将在发行说明.当字段被弃用或以其他方式更改时,我们将尝试保持两个服务器版本的向后兼容性,大约 4-6 周。每当使用已弃用的选项时,CLI 还将打印警告。