说明:最全电力标准
(19)国家知识产权局 (12)发明 专利申请 (10)申请公布号 (43)申请公布日 (21)申请 号 202211070114.4 (22)申请日 2022.09.02 (71)申请人 上海浪潮云计算 服务有限公司 地址 200072 上海市 静安区江场三路238号 411室 (72)发明人 周永进 颜亮 李国涛 秦雪娇  (74)专利代理 机构 济南信达专利事务所有限公 司 37100 专利代理师 冯春连 (51)Int.Cl. G06F 16/23(2019.01) G06F 16/242(2019.01) G06F 16/22(2019.01) (54)发明名称 一种基于两层时间标识的数据湖数据增量 消费方法 (57)摘要 本发明公开一种基于两层时间标识的数据 湖数据增量消费方法, 涉及数据湖技术领域, 包 括数据写入数据湖和查询数据湖中的数据两个 阶段; 在数据写入数据湖阶段, 需要: 创建增量 表, 启动时间服务器生成时间戳来作为写入数据 的时间标识, 生成多个空文件, 将有时间标识的 数据写入空文件, 并在文件名称中增设时间戳; 在查询数据湖中的数据阶段, 需要: 指定待消费 的增量表、 起始消费的时间戳、 每次消费的时间 范围, 判断增量表是否支持增量查询, 在支持时 解析SQL语句, 生成Job, 获取时间戳字段, 进而过 滤增量表, 获取满足要求的文件存储路径。 本发 明可以快速定位数据的存储路径, 实现数据的增 量查询, 解决数据进入数据湖后无法进行增量消 费的缺陷。 权利要求书2页 说明书5页 附图2页 CN 115470223 A 2022.12.13 CN 115470223 A 1.一种基于两层时间标识的数据湖数据增量消费方法, 其特征在于,所述方法包括数 据写入数据湖和查询数据湖中的数据两个阶段; (1)在数据写入数据湖阶段, (1.1)根据数据的表结构信息, 在 “metastore ”中创建增量表, (1.2)获取本批次数据, 启动一个线程作为时间服务器, 客户端通过时间服务器操作系 统的本地时间, 生成一个时间戳Ti, 时间戳Ti作为本批次数据写入数据湖的时间标识, (1.3)预估本 批次数据包 含的数据量, 创建Y个文件, (1.4)根据文件个数划分本批次数据, 并对应写入到Y个文件中, 数据写入文件的过程 中, 在文件的页脚写入数据统计信息, 所述数据统计信息包括该文件包含的数据量、 列存储 的最大值信息和最小值信息, 在文件的页眉写入布隆索引, (1.5)本批次数据全部写入数据湖后, 将本批次数据的写入作为Lo g记录到commit文件 中; (2)在查询数据湖中的数据阶段, (2.1)通过执行set方法指定需要消费的增量表、 起始消费的时间戳T0、 每次消费的时间 范围betwe en_time, (2.2)判断步骤(2.1)中被指定的增量表是否支持增量查询, 若支持, 则继续执行步骤 (2.3), (2.3)解析SQL语句, 生成Job, 在Job中获取时间戳字段 “_commit_time_ ”的值, 即起始 消费的时间戳T0, (2.4)通过时间戳T0过滤当前增 量表, 获取满足大于时间戳T0的文件的存储路径, 多个 文件的存储路径形成文件lists[ ]数组, 将文件lists[ ]数组返回给Job, 以生成执行的 task任务。 2.根据权利要求1所述的一种基于两层时间标识的数据湖数据增量消费方法, 其特征 在于, 执行步骤(1.1)创建的增量表包括表的名字、 表的字段、 表的存储格式以及表的实际 存储位置。 3.根据权利要求2所述的一种基于两层时间标识的数据湖数据增量消费方法, 其特征 在于, 执行步骤(1.1)创建增量表时, 需要增加一个时间戳字段 “_commit_time_ ”, 需要执行 数据的存储格式为Parquet格式, 需要提供唯一字段作为表的主键信息, 支持UUID默认模 式。 4.根据权利要求1或3所述的一种基于两层时间标识的数据湖数据增量消费方法, 其特 征在于, 执 行步骤(1.2)将生成的时间戳Ti作为本批次数据写入数据湖的时间标识后, 客户端首先调用API接口, 获取数据湖的上批次数据写入数据湖的时间戳Ti‑1, 随后对 比本批次数据的时间戳Ti和上批次数据的时间戳Ti‑1, (a)如果时间戳Ti小于时间戳Ti‑1, 则表示时间服务器有异常, 或者, 并发写入数据导致 时间出现冲突, 此时, 客户端会将本批次数据写入失败队列, 随后抛出异常给前台, 提示客 户端处理异常后, 再继续本 批次数据的写入, (b)如果时间戳Ti大于时间戳Ti‑1, 则直接将时间戳Ti作为本批次数据写入数据湖的时 间标识。 5.根据权利要求3所述的一种基于两层时间标识的数据湖数据增量消费方法, 其特征权 利 要 求 书 1/2 页 2 CN 115470223 A 2在于, 执行步骤(1.3), 创建Y个文件的具体流 程为: 预估本批次需要写入数据湖的数据量为X, 每条数据占用的存储空间为m, 设定每个文 件的阈值thresho ld, 那么, 需要创建的文件个数为Y=mX/thresho ld。 6.根据权利要求5所述的一种基于两层时间标识的数据湖数据增量消费方法, 其特征 在于, 生成的文件为Parquet格式, 命名规则为: 随机符串+时间戳+本次写入文件数量序列。 7.根据权利要求3所述的一种基于两层时间标识的数据湖数据增量消费方法, 其特征 在于, 执行步骤(1.4), 在文件的页眉写入布隆索引的具体操作为: 首先, 基于该文件中写入的数据量, 获取 该文件的实际阈值, 然后, 根据该文件的实际阈值确定需要 多少个bit位 来存储布隆索引, 再然后, 对每一行的UUID通过多次hash算法计算出多个位置的结果标志, 将标识根据 bit标志位写入bit存 储中, 最后, 在写入每一行数据时, 给这条记录数据增加时间戳字段 “_commit_time_ ”并赋值 为Ti。 8.根据权利要求1所述的一种基于两层时间标识的数据湖数据增量消费方法, 其特征 在于, Log的内容包含: 本批次共写入多少数据, 新创建了 哪些文件, 哪些文件被合并导致旧 文件失效, 以及本 批次写入的时间戳Ti。 9.根据权利要求1所述的一种基于两层时间标识的数据湖数据增量消费方法, 其特征 在于, 时间戳的格式为y yyymmddhhmmss。 10.根据权利要求9所述的一种基于两层时间标识的数据湖数据增量消费方法, 其特征 在于, 执行步骤(2.3), 在Job中获取时间戳字段 “_commit_time_ ”的值, 即起始消费的时间 戳T0, 具体流程为: (2.3.1)解析SQL语句, 生成Job, 通过语法分析器获取Conditions,判断语法是否符合 增量查询的格式, 若符合, 则继续执 行(2.3.2); (2.3.2)获取时间戳字段_commit_time_, 通过关键字从hash表中获取增量查询的起始 时间标识T0; (2.3.3)判断时间标识T0是否符合时间戳的格式, 若符合, 则返回起始消费的时间戳T0; (2.3.4)获取执行set时配置参数中的时间范围between_time, 基于起始消费的时间戳 T0, 生成结束时间戳Tend。权 利 要 求 书 2/2 页 3 CN 115470223 A 3

PDF文档 专利 一种基于两层时间标识的数据湖数据增量消费方法

文档预览
中文文档 10 页 50 下载 1000 浏览 0 评论 0 收藏 3.0分
温馨提示:本文档共10页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
专利 一种基于两层时间标识的数据湖数据增量消费方法 第 1 页 专利 一种基于两层时间标识的数据湖数据增量消费方法 第 2 页 专利 一种基于两层时间标识的数据湖数据增量消费方法 第 3 页
下载文档到电脑,方便使用
本文档由 SC 于 2024-02-07 12:42:53上传分享
站内资源均来自网友分享或网络收集整理,若无意中侵犯到您的权利,敬请联系我们微信(点击查看客服),我们将及时删除相关资源。