ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

DataHub BigQuery 接入实战:资产覆盖范围、摄取管道能力与连接器配置解析(基于 quick-ingestion-guides/bigquery)

DataHub BigQuery 接入实战:资产覆盖范围、摄取管道能力与连接器配置解析(基于 quick-ingestion-guides/bigquery) DataHub BigQuery 接入实战资产覆盖范围、摄取管道能力与连接器配置解析基于 quick-ingestion-guides/bigquery【免费下载链接】datahubThe Context Platform for your Data and AI Stack项目地址: https://gitcode.com/GitHub_Trending/da/datahub本篇指南基于 DataHub 仓库中的 BigQuery 快速接入总览 展开完整覆盖 UI 摄取工作流能抽取的 BigQuery 资产类型、用量/血缘/画像三类元数据管道以及当前版本 BigQuery 连接器bigquery_v2在源码中对应的核心配置项与默认值帮助你从零搭建一条周期性运行的 BigQuery 元数据摄取管道并理解其底层实现边界。一、指南目标你将得到什么按照 总览文档、设置文档 与 配置文档 完成全部步骤后你会获得一条周期性运行的摄取管道recurring ingestion pipeline它持续从 BigQuery 抽取元数据并加载到 DataHub。管道最终沉淀三类核心资产BigQuery 资产实体Projects项目、Datasets数据集、Tables表、Views视图、Materialized Views物化视图、External Tables外部表动态元数据用量统计Usage statistics、表级血缘Table-level lineage数据形状信息表级与列级画像统计Profile statistics。其中外部表是重点连接器的摄取结果会把源文件格式source format、文件 URI 列表、压缩方式compression、最大坏记录数max bad records等外部表特有的属性写入 DataHub 的 custom properties让表实际指向哪些 GCS 文件这类信息直接在目录中可查。二、明确的能力边界哪些资产不会抽取总览文档特别用 caution 提示了连接器的能力边界Routines存储过程/函数与 Search Indexes搜索索引不会被抽取当前连接器不支持这两类资产。规划接入范围时应以此为前提。反过来从源码结构看连接器实际支持面比六大资产更宽。在 bigquery_config.py 的BigQueryV2Config中还可以看到这些可选能力开关默认值均以当前仓库为准配置项默认值作用include_schema_metadataTrue是否摄取项目、数据集、表与视图的 Schema 元数据include_usage_statisticsTrue是否生成用量统计include_table_lineageTrue是否生成表级血缘use_queries_v2True启用新版 queries 抽取器默认路径include_table_snapshotsTrue是否摄取表快照table snapshotsinclude_external_urlTrue是否为实体填充 BigQuery Console 跳转链接capture_table_label_as_tagFalse是否把 BigQuery 表级 labels 捕获为 DataHub 标签capture_view_label_as_tagFalse视图 labels 转标签capture_dataset_label_as_tagFalse数据集 labels 转标签include_linked_dataset_lineageFalse检测 BigQuery Sharing 的 linked datasets 并生成血缘extract_policy_tags_from_catalogFalse通过 INFORMATION_SCHEMA 与 Data Catalog API 抽取 policy tags这些字段均可在 UI 配方表单之外的 CLI recipeYAML中精细配置UI 快速接入默认使用上述默认值即可。三、动态元数据管道用量、血缘与画像总览文档承诺的三项动态元数据在连接器源码中都有明确的实现模块目录metadata-ingestion/src/datahub/ingestion/source/bigquery_v2/3.1 用量统计Usageusage.py 与 bigquery_audit.py 负责从 BigQuery 的审计日志audit logs中读取近期查询活动按表聚合出读取量等用量指标。默认情况下use_queries_v2: True查询抽取走 queries_extractor.py 的新版抽取路径。从源码结构看queries-v2 路径会扫描 INFORMATION_SCHEMA JOBS 视图默认扫描区域由region_qualifiers配置控制默认region-us与region-eu见 bigquery_config.py。如果你的项目存在其他区域的 dataset可开启region_qualifiers_auto_discovery默认False避免意外的查询费用让连接器自动扩展扫描区域。3.2 表级血缘含外部表到 GCS 的路径血缘lineage.py 与 bigquery_audit_log_api.py 实现从审计日志构建表读取谁的血缘边。两个关键默认行为lineage_use_sql_parser默认True使用 SQL 解析器解析查询文本把血缘精确落到查询中真正引用的表/视图include_column_lineage_with_gcs默认True当查询涉及外部表时还会建立外部表到 GCS 源路径的列级血缘——这正是总览文档所说lineage from external tables to their GCS source paths的实现来源相关 GCS 路径匹配规则由 common.py 中的路径处理逻辑与gcs_lineage_configpath_specs、strip_urls等控制。此外源码中还提供两条高级血缘路径默认关闭extract_lineage_from_catalog走 Google Data Catalog 的 Data Lineage API注意其无法构建视图血缘与use_exported_bigquery_audit_metadata读取导出到指定 dataset 中的cloudaudit_googleapis_com_data_access审计日志表需配套bigquery_audit_metadata_datasets配置。3.3 表级与列级画像统计总览文档承诺抽取table- and column-level profile statistics。画像能力由 bigquery_v2/profiling/ 子目录实现BigQueryV2Config通过继承StatefulProfilingConfigMixin见 bigquery_config.py接入 DataHub 通用的有状态画像配置采样率、画像列过滤、增量画像等。需要注意的是启用画像会改变抽取权限要求见下节 Role 分配且会触发use_tables_list_query_v2相关的数据读取路径have_table_data_read_permission属性由use_tables_list_query_v2 or is_profiling_enabled()判定见 bigquery_config.py。四、前置条件Service Account 与 IAM 角色以下内容继承自 setup.md是接入的硬性前提你需要一个配置了正确权限的Service Account及其Service Account Key。4.1 管理侧权限用于创建账号与授权创建和管理 Service Account / Key 时需要创建 Service Accountiam.serviceAccounts.create为 Service Account 分配角色serviceusage.services.enable对项目设置权限策略resourcemanager.projects.setIamPolicy生成 KeyService Account Key Adminroles/iam.serviceAccountKeyAdmin角色4.2 抽取侧角色分配给 Service Account角色服务的抽取能力BigQuery Job User基础作业执行权限BigQuery Metadata Viewer元数据Schema抽取BigQuery Resource Viewer表级血缘与用量抽取Logs View Accessor表级血缘与用量抽取审计日志读取BigQuery Data Viewer画像ProfilingBigQuery Read Session User画像Profiling如果计划按project_labels过滤项目还需在 Google Cloud Console 启用Cloud Resource Manager API最后创建并下载 Service Account KeyJSON 文件DataHub 中会用到其中的private_key、private_key_id、project_id、client_email、client_id字段。4.3 DataHub CloudObserve断言的附加权限setup 文档还给出了使用 DataHub Cloud 断言Freshness / Volume / Column / Custom SQL时的权限矩阵要点Freshness Volume 断言Platform API 源只需 BigQuery Metadata Viewer免费 API 调用但受 BigQuery API 速率限制建议错峰调度Information Schema 源额外需要 BigQuery Data ViewerAudit Log 源需要logging.logEntries.listlogging.privateLogEntries.listQuery / Last Modified Column / High Watermark Column 源需要 BigQuery Data ViewerDataHub Operation / DataHub Dataset Profile 源无需 BigQuery 权限。Column字段断言All Rows Query / Changed Rows Query 需要 BigQuery Data ViewerDataHub Dataset Profile 无需 BigQuery 权限仅对部分指标类型可用。Custom SQL 断言需要 BigQuery Job User BigQuery Data Viewer且 Service Account 必须能访问 SQL 中引用的所有表。五、UI 配置步骤Secrets、Recipe、调度与验证以下内容继承自 configuration.md对应 DataHub UI 摄取工作流进入右上角Ingestion页若无入口需管理员授权在Secrets页点击Create new secret创建两个私钥型 Secret名为BIGQUERY_PRIVATE_KEY的 Secret值填入 Service Account Key 中的private_key名为BIGQUERY_PRIVATE_KEY_ID的 Secret值填入private_key_id在Sources页点击Create new source选择BigQuery填写 BigQuery RecipeProject ID、Client Email、Client ID 取自 Key 文件Private Key / Private Key ID 两个字段选择上一步创建的 Secret点击Test Connection——该步骤会实际校验凭据并确认具备抽取全部相关元数据的权限通过后点Next设置调度周期day / hour / minute 等与时区点Next为数据源命名点击Save and Run即可看到新管道进入运行状态验证结果在 Ingestion 页查看运行状态展开历史运行记录进入 Details 页点View All查看本次抽取的实体清单并抽查某个实体确认包含了预期细节Schema、血缘、用量等。六、项目过滤与关键参数源码级说明UI 快速接入使用默认配置即可跑通当需要控制摄取哪些项目/数据集时recipe 层的过滤配置定义在 bigquery_config.py 的BigQueryFilterConfig是关键project_ids显式指定要摄取的项目列表覆盖project_id_pattern同时避免给 Service Account 授予resourcemanager.projects.list权限project_labels按项目级标签key:value形式过滤项目。注意源码中的优先级逻辑若设置了project_ids则本项不生效未设置project_ids时先按 label 过滤、再叠加project_id_pattern正则project_id_pattern/dataset_patternAllowDenyPattern 正则过滤。源码中dataset_pattern在match_fully_qualified_names: True默认时会把不含.的模式自动改写为.*.pattern形式以匹配project_id.dataset_name全限定名见 bigquery_config.py 的改写逻辑rate_limit/requests_per_minAPI 限流开关默认关闭、开启后默认 60 次/分钟见 bigquery_config.pymax_threads_dataset_parallelism并行抽取数据集元数据的线程数默认值来自环境变量可设为 1 禁用并行temp_table_dataset_prefix默认_利用下划线开头的数据集默认隐藏的约定过滤临时表 datasetsharded_table_pattern把_yyyymmdd等日期分片表合并为一张逻辑表的正则已标记 deprecated谨慎修改。另外源码中可以看到若干历史配置迁移行为避免踩坑project_id单数会自动合并进project_ids顶层start_time/end_time/bucket_duration/max_query_duration是控制 lineage usage 的统一时间窗口参数写在usage.子段下会触发弃用告警并自动前移到顶层见 bigquery_config.py。七、进阶路径从 UI 走向 CLI当 UI 快速接入不能满足需求更复杂的过滤、变换、多源编排时总览文档指出的进阶入口是CLI 摄取的整体介绍metadata-ingestion/README.mdIntroduction to Metadata Ingestion生成版的 BigQuery 连接器参考文档仓库内所有字段级说明以 bigquery_config.py 中各Field(description...)为准可结合 总览文档 末尾指向的官方 Reference 使用。连接器的注册入口在 bigquery_v2/bigquery.pyBigQuerySource主实现配合 bigquery_test_connection.pyTest Connection 的实现、bigquery_report.py摄取报告与 bigquery_schema_gen.py配方表单生成构成完整的 source 包。八、小结本文对应文档为 docs/quick-ingestion-guides/bigquery/overview.md配套 setup.md 与 configuration.md完成后你拥有周期摄取 Projects / Datasets / Tables / Views / Materialized Views / External Tables含外部表文件属性并附带用量统计、表级血缘含外部表到 GCS 的路径血缘、表级与列级画像边界明确Routines 与 Search Indexes 不在抽取范围内深入定制时以 bigquery_v2 目录 源码与BigQueryV2Config的字段定义为最终事实来源。【免费下载链接】datahubThe Context Platform for your Data and AI Stack项目地址: https://gitcode.com/GitHub_Trending/da/datahub创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表