谷歌云 | BigQuery 现在支持用于查询开放表格式的清单文件

Cloud Ace 是谷歌云全球战略合作伙伴,拥有 300 多名工程师,也是谷歌最高级别合作伙伴,多次获得 Google Cloud 合作伙伴奖。作为谷歌托管服务商,我们提供谷歌云谷歌地图谷歌办公套件谷歌云认证培训服务

开放表格式依赖嵌入式元数据来提供事务一致的 DML 和时间旅行功能。它们保留不同版本的数据文件,并且能够生成清单,清单是表示时间点快照的数据文件列表。许多数据运行时(例如Delta Lake和Apache Hudi)都可以生成清单,可用于加载和查询用例。

BigQuery 现在支持清单文件,这将使使用 BigQuery 查询开放表格式变得更加容易。BigQuery 支持 SymLinkTextInputFormat 中的清单文件,它只是一个以换行符分隔的 URI 列表。客户现在可以在表选项中将file_set_spec_type标志设置为NEW_LINE_DELIMITED_MANIFEST,以指示提供的 URI 是换行符分隔的清单文件,每行一个 URI。此功能还支持 Hive 式分区表的分区修剪,从而提高性能并降低成本。 以下是使用清单文件创建 BigLake 表的示例。

使用清单支持查询 Apache Hudi

Apache Hudi是一个用于大数据工作负载的开源数据管理框架。它构建在 Apache Hadoop 之上,提供了一种管理 Hadoop 分布式文件系统 (HDFS) 或任何其他云存储系统中的数据的机制。可以使用Hudi-BigQuery Connector从 BigQuery 作为外部表查询 Hudi 表。Hudi-BigQuery 集成仅适用于 hive 样式分区的写入时复制表。

该实现不允许使用一些重要的查询处理优化,这会损害性能并增加槽消耗。为了克服这些痛点,Hudi-BigQuery 连接器进行了升级,以利用 BigQuery 的清单文件支持。以下是使用连接器查询 Apache Hudi 工作负载的分步过程。

步骤 1:下载并构建 BigQuery Hudi 连接器下载并构建最新的 hudi-gcp-bundle 以运行BigQuerySyncTool。

步骤 2:运行 Spark 应用程序以生成 BigQuery 外部表以下是使用清单方法使用连接器的步骤:

  • 删除 BigQuery 中表示 Hudi 表的现有视图 [如果使用旧实现]
    • Hudi 连接器查找表名,如果存在,它只会更新清单文件。由于架构不匹配,查询将开始失败。确保在触发最新的连接器之前删除视图。
  • 运行最新的 Hudi Connector 来触发清单方法
    • 使用 –use-bq-manifest-file 标志运行 BigQuerySyncTool。
    • 如果您要从旧实现过渡,请将 –use-bq-manifest-file 标志附加到运行现有连接器的当前 Spark 提交。建议使用相同的表名称,因为它将允许保留现有的下游管道代码。
    • 使用 use-bq-manifest-file 标志运行连接器将以 BigQuery 支持的格式导出清单文件,并使用它来创建具有 –table 参数中指定的名称的外部表。

以下是清单方法的 Spark 提交示例。

步骤 3:推荐:升级到加速 BigLake 表运行大规模分析的客户可以将外部表升级到 BigLake 表,以设置适当的细粒度控制,并通过利用元数据缓存和物化视图来加速这些工作负载的性能。

使用清单支持查询 Delta Lake

Delta Lake是一个开源存储框架,可以构建 Lakehouse 架构。它使用基于文件的事务日志扩展了 Parquet 数据文件,以实现 ACID 事务和可扩展的元数据处理。它还提供了导出清单文件的选项,其中包含表示时间点快照的数据文件列表。 借助清单支持,用户可以创建 BigLake 表来查询 GCS 上的 Delta Lake 表。每当底层 Delta Lake 表发生更改时,用户有责任生成清单,并且此方法仅支持查询 Delta Lake reader v1 表。以下是使用清单支持查询 Delta Lake 表的分步过程。步骤 1:使用 Apache Spark 生成 Delta 表的清单Delta Lake 支持导出清单文件。生成命令在<path-to-delta-table>/_symlink_format_manifest/生成清单文件。此目录中的文件将包含读取 Delta 表快照时应读取的数据文件(即 Parquet 文件)的名称。

步骤 2:在生成的清单上创建 BigLake 表 使用上一步生成的清单文件创建基于BigLake 表的清单文件。如果底层 Delta Lake 表已分区,您可以创建 Hive 样式分区 BigLake 表。

步骤 3:推荐:升级到加速 BigLake 表在 Delta Lake 工作负载上运行大规模分析的客户可以通过利用元数据缓存和物化视图来提高性能。

下一步是什么?

如果您是 OSS 客户,希望在 GCS 上查询 Delta Lake 或 Apache Hudi 工作负载,请利用清单支持,如果您还希望进一步提高性能,则可以通过利用元数据缓存和物化视图来实现。

如果您有任何疑问或需求,欢迎随时与我们取得联系。

Leave a Reply