谷歌云 | 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 工作负载,请利用清单支持,如果您还希望进一步提高性能,则可以通过利用元数据缓存和物化视图来实现。 

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/78000.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Golang下载安装

目录 1. 下载压缩包 2. 解压 3. 查看SDK是否安装成功 4. 配置环境变量 5. 查看环境变量是否配置成功 1. 下载压缩包 官网下载地址&#xff1a; All releases - The Go Programming Language Windows64位选择如下下载&#xff1a; 2. 解压 解压后内容如下&#xff1a; …

开源数据库Mysql_DBA运维实战 (DDL语句)

DDL DDL语句 数据库定义语言&#xff1a;数据库、表、视图、索引、存储过程. 例如:CREATE DROP ALTER DDL库 定义库{ 创建业务数据库&#xff1a;CREAATE DATABASE ___数据库名___ ; 数据库名要求{ a.区分大小写 b.唯一性 c.不能使用关键字如 create select d.不能单独使用…

unity拓展 unity自带的类(Tranform为例)

因为我们使用了ILRuntime热更&#xff0c;unity 打出的WebGL包&#xff0c;运行就会报找不到DoTween里面的方法&#xff0c;所以吧DoTween拓展到tranform类里面&#xff0c;这样就不会报错了&#xff0c;下面是示例 using DG.Tweening; using System.Collections; using Syste…

【CSS动画01--登录】

CSS动画01--登录 介绍代码HTMLCSSJS 介绍 当鼠标不同方向的划过时展示不同效果的登录&#xff0c;以上是一个简单的图片展示 代码 HTML <!DOCTYPE html> <html> <head><meta http-equiv"content-type" content"text/html; charsetutf-8&…

【第二讲---初识SLAM】

SLAM简介 视觉SLAM&#xff0c;主要指的是利用相机完成建图和定位问题。如果传感器是激光&#xff0c;那么就称为激光SLAM。 定位&#xff08;明白自身状态&#xff08;即位置&#xff09;&#xff09;建图&#xff08;了解外在环境&#xff09;。 视觉SLAM中使用的相机与常见…

Linux命令200例:crontab详解及应用场景(常用)

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌。CSDN专家博主&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &…

编译老版本c++程序 报错 msvcrt.dll 以及 0x000000 内存 不能为 “read“ 问题已解决

一般 win10 编译 xp对应老版本软件 调试采用 虚拟机形式进行测试&#xff0c;但是虚拟机中&#xff0c;无独立显卡&#xff0c;运行程序提示有&#xff0c;无法调用动态库&#xff0c;或者 内存无法读取&#xff0c;炸一看以为 winxp32位 内存识别只能3.7G.其实是显存无法使用…

idea 使用debug 启动项目的时候 出现 Method breakpoints may dramatically slow down debugging

问题: 1. 写了一段时间的代码&#xff0c;在debug启动项目后提示&#xff1a;Method breakpoints may dramatically slow down debugging 但是正常启动是可以的&#xff0c;debug不行。 2. idea 里面的项目&#xff0c;很多地方都有断点&#xff0c;现在想要取消全部的断点…

重塑DTC规则:元气森林的全渠道转型

元气森林作为迄今为止用5-6年时间最快达到70亿年销售额的饮料品牌&#xff08;统一、可口可乐、东鹏特饮都花了15年左右&#xff0c;康师傅花了10年&#xff09;。元气森林于2016年在北京创立&#xff0c;凭借健康产品理念和新潮营销方式&#xff0c;一款主打“0糖0卡0脂”概念…

k8s 认证和权限控制

k8s 的认证机制是啥&#xff1f; 说到 k8s 的认证机制&#xff0c;其实之前咋那么也有提到过 ServiceAccouont &#xff0c;以及相应的 token &#xff0c;证书 crt&#xff0c;和基于 HTTP 的认证等等 k8s 会使用如上几种方式来获取客户端身份信息&#xff0c;不限于上面几种…

JDBC封装与设计模式

什么是 DAO &#xff1f; Data Access Object(数据存取对象) 位于业务逻辑和持久化数据之间实现对持久化数据的访问 DAO起着转换器的作用&#xff0c;将数据在实体类和数据库记录之间进行转换。 ----------------------------------------------------- DAO模式的组成部分 …

QGIS3.28的二次开发五:VS使用QT插件创建UI界面

前面我们说了在创建项目时创建的是一个空项目&#xff0c;即不使用 Qt 提供的综合开发套件 Qt Creator&#xff0c;也不使用 Qt Visual Studio Tools 这类工具。 但是后面发现&#xff0c;如果我想要有更加满意的界面布局&#xff0c;还是要自己写一个UI文件&#xff0c;如果不…

【Python】基础语法:变量类型和动态类型

文章目录 1. 常量2. 变量3. 动态类型特性 努力经营当下 直至未来明朗 1. 常量 浮点数在内存中表示使用的是IEEE754标准&#xff0c;这套规则下&#xff0c;在内存中表示该浮点数额时候可能会存在微小的误差 在进行运算的时候&#xff0c;最好可以将数字&#xff08;字面值常…

Transformer(二)(VIT,TNT)(基于视觉CV)

目录 1.视觉中的Attention 2.VIT框架&#xff08;图像分类&#xff0c;不需要decoder&#xff09; 2.1整体框架 2.2.CNN和Transformer遇到的问题 2.3.1CNN 2.3.2Transformer 2.3.3二者对比 2.4.公式理解 3TNT 参考文献 1.视觉中的Attention 对于人类而言看到一幅图可以立…

UglifyJS 和JShaman相比有什么不同?都可以进行js混淆加密吗?

UglifyJS 和JShaman相比有什么不同&#xff1f; UglifyJS主要功能是压缩JS代码&#xff0c;减小代码体积&#xff1b;JShaman是专门用于对JS代码混淆加密&#xff0c;目的是让JS代码变的不可读、混淆功能逻辑、加密代码中的隐秘数据或字符&#xff0c;是用于代码保护的。 因此…

行业追踪,2023-08-10

自动复盘 2023-08-10 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…

【CSS】CSS 布局——弹性盒子

Flexbox 是一种强大的布局系统&#xff0c;旨在更轻松地使用 CSS 创建复杂的布局。 它特别适用于构建响应式设计和在容器内分配空间&#xff0c;即使项目的大小是未知的或动态的。Flexbox 通常用于将元素排列成一行或一列&#xff0c;并提供一组属性来控制 flex 容器内的项目行…

【ts】【cocos creator】excel表格转JSON

需要将表格导出为text格式放到项目resources/text文件夹下 新建场景&#xff0c;挂载到Canvas上运行 表格文件格式&#xff1a; 保存格式选text tableToJson : import CryptoJS require(./FileSaver);const { ccclass, property } cc._decorator;ccclass export default c…

线程|线程的使用、四种实现方式

1.线程的实现方式 1.用户级线程 开销小&#xff0c;用户空间就可以创建多个。缺点是&#xff1a;内核无法感知用户级多个线程的存在&#xff0c;把其当作只有一个线程&#xff0c;所以只会提供一个处理器。 2.内核级线程 相对于用户级开销稍微大一点&#xff0c;可以利用多…

JS逆向-某招聘平台token

前言 本文是该专栏的第56篇,后面会持续分享python爬虫干货知识,记得关注。 通常情况下,JS调试相对方便,只需要chrome或者一些抓包工具,扩展插件,就可以顺利完成逆向分析。目前加密参数的常用逆向方式大致可分为以下几种,一种是根据源码的生成逻辑还原加密代码,一种是补…