本指南说明如何启用和使用 Dataplex Discovery。Discovery 从数据湖中的数据中扫描和提取元数据,并将其注册到 Dataproc Metastore、BigQuery 和 Data Catalog 以进行分析、搜索和探索。
对于启用了 Discovery 的每个 Dataplex 资产,Dataplex 扫描与资产关联的数据,将结构化和半结构化文件分组到表中,并收集技术元数据,例如表名、架构和分区定义。
对于图像和视频等非结构化数据,Dataplex Discovery 会自动检测并注册与文件集共享相同媒体类型的文件组。例如,如果gs://images/group1 包含 GIF 图像和gs://images/group2JPEG 图像,Dataplex Discovery 会检测并注册两个文件集。
发现的表和文件集在 Data Catalog 中注册以供搜索和发现。这些表在 Dataproc Metastore 中显示为 Hive 样式表,在 BigQuery 中显示为外部表,因此数据会自动用于分析。
JSON 和 CSV 文件的外部压缩:
压缩包
bzip2
发现配置
创建新区域或资产时默认启用发现。您可以在区域或资产级别禁用发现。
创建区域或资产时,您可以选择继承区域级别的发现设置,或覆盖资产级别的发现设置。
以下是区域和资产级别可用的 Discovery 配置选项:
发现和关闭。
发现计划:此选项可以设置为预定义的计划——例如,每小时或每天,或由 cron 格式定义的自定义计划。添加新资产时会对其进行扫描。有关详细信息,请参阅配置 cron 计划。建议:将发现安排为每小时运行一次或以更低的频率运行。
包含或排除模式:通过在包含或排除路径中使用 glob 模式,定义要从发现扫描中包含或排除哪些文件。例如,如果您想gs://test_bucket/foo/..从发现中排除,请输入**/foo/*作为排除路径。引号会导致错误。确保输入**/foo/*而不是"**/foo/*"。)此功能仅适用于云存储资产。当包含和排除模式同时存在时,首先应用排除模式。
JSON 或 CSV 规范:让您提供有关半结构化数据(例如 CSV 和 JSON)的附加信息,以提高 Discovery 结果的准确性。
对于 CSV 文件,您可以提供以下任何一项:
定界符:该字段接受一个字符,除了\r和\n。如果提供了多个字符,则仅使用字符串的第一个字符。如果未提供,Discovery 将使用逗号作为分隔符。
标题行数:此字段接受值0或1。默认值为0。当值为 时0,Discovery 执行标头推断,如果检测到标头,Discovery 会从标头中提取列名并将值重置为1。
编码:此字段接受字符串编码名称,例如UTF-8、 US-ASCII或ISO-8859-1。如果未指定任何内容,UTF-8则用作默认值。
禁用类型推断:此字段接受布尔值。默认情况下设置为false。对于 CSV 数据,如果禁用类型推断,所有列都将注册为字符串。
对于 JSON 文件,您可以提供以下任何一项:
编码:此字段接受字符串编码名称,例如UTF-8、 US-ASCII或ISO-8859-1。如果未指定任何内容,UTF-8则用作默认值。
禁用数据类型推断:此字段接受布尔值。默认情况下设置为false。对于 JSON 数据,如果您禁用类型推断,则所有列都将注册为其基本类型(字符串、数字或布尔值)。
每个 Dataplex 数据区都映射到 BigQuery 中的数据集或 Dataproc Metastore 中的数据库,其中元数据信息自动可用。
您可以使用 Dataplex 元数据 API 编辑自动发现的元数据,例如表名或架构。
查看发现的表和文件集
您可以在 Google Cloud 控制台的 Dataplex Discover视图中搜索发现的表和文件集 。
打开发现
要获得更准确的搜索结果,请使用特定于 Dataplex 的过滤器,例如湖泊和数据区名称。每个构面的前 50 个项目显示在过滤器列表中。您可以使用搜索框查找任何其他项目。
每个条目都包含详细的技术和操作元数据。
在入口详情页面,可以查询BigQuery中的表,查看对应的Dataproc Metastore注册详情。
如果 Cloud Storage 表可以作为外部表发布到 BigQuery 中,那么您可以在其条目详细信息视图中看到以下内容:
BigQuery 外部表引用
用于在 BigQuery 中打开以开始分析 BigQuery 中的数据的按钮。
所有 Dataplex 元数据条目 在 Data Catalog 中都是直接可见和可搜索的。要了解更多信息,请参阅数据目录搜索参考。
所有发现的条目都可以通过 Dataplex 元数据 API 查看。
发现行动
只要在扫描期间检测到数据相关问题,Discovery 就会引发以下管理操作。
数据格式无效
行动包括:
表格中的数据格式不一致。例如,不同格式的文件存在于同一个表前缀下。
精选区域中的数据格式无效 (数据不是 Avro、Parquet 或 ORC 格式)。
不兼容的模式
行动包括:
Discovery 检测到的架构与 Dataproc Metastore 中元数据 API 中的活动表架构不兼容。模式 A 和模式 B 在以下情况下不兼容:
A 和 B 共享名称相同但数据类型不同且不兼容的字段。例如,字符串和整数。
A 和 B 没有重叠字段。
A 和 B 至少有一个在另一个架构中找不到的不可空字段。
策划区域中用户管理的架构的架构漂移。
无效的分区定义
行动包括:
分区命名不一致。例如, gs://sales_data/year=2020/month=10/day=01和 gs://sales_data/year=2020/region=us。
精选数据区中的非 Hive 样式分区命名。例如,gs://sales_data/2020/10/01而不是 gs://sales_data/year=2020/month=10/day=01.
缺失数据
行动包括:
在精选数据区中,注册表或文件集的基础数据不再存在。换句话说,发现并注册了一个精选区域表或文件集,但后来它的基础数据被删除了。您可以通过补充数据或 删除元数据条目来解决此问题。
解决发现操作
具有操作的数据由后续发现扫描检查。当触发操作的问题得到修复时,下一次计划的发现扫描会自动解决该操作。
其他行为
除了前面的 Discovery 操作之外,还有其他三种与 Dataplex 中的资源状态和安全策略传播相关的操作。
缺少资源:找不到与现有资产对应的基础存储桶或数据集。
未经授权的资源:Dataplex 没有足够的权限来执行发现或将安全策略应用于 Dataplex 管理的存储桶或数据集
安全策略传播问题:为给定湖泊、区域或资产指定的安全策略无法成功传播到底层存储桶或数据集。虽然所有其他行动都在资产层面,但此类行动可以在湖泊、区域和资产层面提出。
当底层资源或安全配置问题得到纠正时,这些类型的操作会自动解决。
常问问题
Discovery推断的schema不正确怎么办?
如果推断的模式与给定表的预期模式不同,您可以通过使用 元数据 API更新元数据来覆盖推断的模式。确保设置 userManaged 为,true以便您的编辑不会在后续发现扫描中被覆盖。
如何从发现扫描中排除文件?
默认情况下,Discovery 从扫描中排除某些类型的文件,包括:
您可以使用区域或资产级别的发现配置或使用元数据 API 来指定其他包含或排除模式。
Discovery检测到的表分组太细怎么办?
如果 Discovery 检测到的表与表根路径相比处于更精细的级别——例如,每个单独的分区都注册为一个表,则可能有以下几个原因:
在预期的表根路径下存在格式差异,例如 Avro 和 Parquet 文件的混合,将表拆分为更小的组。
在预期的表根路径下存在不同类型的模式不兼容,将表拆分为更小的分组。
此问题可以通过以下任一方式解决:
修复格式/架构差异,使同一表根路径下的所有文件具有一致的格式和兼容的架构。
通过使用排除模式配置作为区域/资产配置或元数据 API 的一部分来排除异构文件。
采取其中一个纠正步骤后,在下一次发现扫描中,现有的较低级别的表会自动从 Dataplex 元数据 API、BigQuery、Dataproc Metastore 和数据目录中删除,并会自动删除一个包含预期表的新的较高级别的表而是创建根路径。
如何指定表名?
您可以使用元数据 API指定表名。
如果我在 Dataproc Metastore 或 BigQuery 中手动创建表会怎样?
为给定资产启用 Discovery 后,您无需在 Dataproc Metastore 或 BigQuery 中手动注册条目。
您可以手动定义表名、架构和分区定义,同时关闭 Dataplex Discovery。或者,您可以通过仅指定所需信息(例如表根路径)来创建表 ,然后使用 Dataplex Discovery 填充其余元数据(例如架构和分区定义),并使元数据保持最新。
如果我的表未显示在 BigQuery 中,我该怎么办?
虽然 Dataplex 元数据全部集中注册在元数据 API 中,但只有与 BigQuery 兼容的 Cloud Storage 表才会作为外部表发布到 BigQuery。作为 元数据 API中表条目详细信息的一部分,您可以找到一个 BigQuery 兼容性标记,它指示哪些实体发布到 BigQuery 以及原因。