- VisualStudio2022插件的安装及使用-编程手把手系列文章
- pprof-在现网场景怎么用
- C#实现的下拉多选框,下拉多选树,多级节点
- 【学习笔记】基础数据结构:猫树
沃土云创开源开发者专项计划是华为给开源开发者提供专属激励资源,鼓励开发者积极参与开源 for Huawei适配,践行“让优秀开发者支持更优秀开发者”的理念.
之前我们介绍了fake2db的适配过程,本文主要分享一位开源开发者参与Beam适配GaussDB的实践经验.
Beam是一个由ASF社区孵化的开源统一编程模型,适用于复杂的数据处理,提供了一个可移动(兼容性好)的 API 层。这层 API 的核心概念基于 Beam 模型(以前被称为 Dataflow 模型),并在 Beam 这个计算引擎上执行.
随着业务数据量不断增加,业界出现了越来越多的分布式数据处理框架,从最早的hadoop Mapreduce到Apache Spark、Apache Storm、以及Apache Flink。新的分布式处理框架带来了更高性能,更强大功能,更低的延迟等,但是当用户把程序切换到新的分布式处理框架的代价也非常大,需要重写对应的业务逻辑.
解决这个问题需要注意两部分,首先,需要一个编程范式,能够统一规范分布式数据处理,例如采用批处理还是流处理;其次数据处理程序需要可以在各个分布式引擎上正常执行,用户可以根据实际情况切换计算引擎和执行环境。Apache Beam 正好可以解决以上问题.
以Beam为例,官网文档详尽地说明了怎么使用。开发者需实现对应的接口,尤其是其中连接数据库的方法,这通常要求使用不同的连接方式,主要是实现Apply方法。完成前期准备工作,有利于开发者在动手之前就能对项目的适配目标和功能有较清晰的认识,从而避免开发者在后续开发中因直接面对大量代码无从下手,节省了大量寻找适配路径的宝贵时间.
此外,在正式开发之前,建议在本地环境或华为云环境中先运行项目。这样不仅能通过实际操作来直观感受项目的功能,而且提前部署好环境还能为后续的测试和验证工作带来便利.
经过对Beam的了解,对适配该项目开发工作有了初步认识。在开始开发Beam项目时候,第一步将华为云 OpenSourceForHuaweiDemoJava 仓库代码fork至个人仓库(地址:https://gitcode.com/HuaweiCloudDeveloper/OpenSourceForHuaweiDemoJava/overview),然后克隆到本地开发环境中.
鉴于Beam项目主要采用Java语言开发,接下来我们将华为云提供的Java SDK添加为项目依赖,并借助该SDK来实现Beam组件中的Apply关键方法。在适配GaussDB时主要是重写Apply方法实现数据库的连接.
在开发Beam过程中,我们参考了华为云官方接口文档(https://support.huaweicloud.com/intl/zh-cn/sdkreference-iothub/iot_10_10002.html),以全面掌握其SDK的各项功能。成功实现接口后,我们进行了单元测试,确保软件功能正常运行.
若Beam计算引擎可以从GaussDB中读取和写入数据,则可说明Beam这个计算引擎能在GaussDB中正常使用,demo案例验证过程如下:
首先需要在GaussDB数据库中创建一张表beam_t,其中表的主键字段是id,在表中输入几笔测试数据; 。
然后使用Beam这个计算引擎框架编写代码,在华为云CCE中部署运行项目,这样可以亲身体验项目的功能,从而获得更直观的感受.
代码实现如下逻辑:
先重写Beam计算框架中的Apply方法,目的是创建与GaussDB数据库连接 。
从GaussDB数据库中读取 beam_t 表中字段id的最大值,并记录为max1 。
将max1加上1得到max2值 。
将max2值回写到GaussDB数据库对应的 beam_t表中 。
再次查询 GaussDB数据库中表 beam_t 字段id最大值,并关闭数据库连接 。
对比max1和max2发现前后最大值有变化,可以验证Beam计算引擎是可以连接GaussDB并读取数据以及向GaussDB写入数据的 。
测试流程如下:
先在客户端查表中最大值是9:
执行运行程序(接口返回运行程序前是9,运行程序后是10,符合预期),CCE部署:
接口测试:
用客户端再查对应表的最大id值是10:
至此,通过以上测试证明Beam可以从GaussDB读取数据以及写入数据.
本案例使用的数据库驱动是GaussDB官网推荐的驱动gsjdbc4.jar(主类名为“ org.postgresql.Driver ”,数据库连接的url前缀为“ jdbc:postgresql ”)。基于GaussDB是从PostgreSQL演变而来,Beam能够支持postgresql数据库,理论 GaussDB也能够支持 gsjdbc4.jar,果不其然,通过使用 gsjdbc4.jar替换postgresql的驱动jar,也同样可以连接操作GaussDB .
当你完成了开源项目Beam的适配工作,并且新增的代码已经经过严格测试确认无误后,你可以通过提交一个Pull Request(PR)来请求官方社区将你的功能代码合并到项目中。在此之前,请务必仔细阅读项目的贡献指南和代码编写规范,以确保你的代码能够顺利地被项目接纳并合并.
诚邀各位技术达人加入到使用GaussDB序列的Beam社区,您有何疑问,都可在此推文评论区留言,或前往开源开发者专属的问答板块提问,热切希望能与您深入交流,共同探讨.
。
点击关注,第一时间了解华为云新鲜技术~ 。
最后此篇关于开源forHuawei,Beam适配GaussDB实践案例分享的文章就讲到这里了,如果你想了解更多关于开源forHuawei,Beam适配GaussDB实践案例分享的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
直接上代码,可以写在公共文件common和继承的基础类中,方便调用 ?
1、php服务端环境搭建 1.php 服务端环境 安装套件 xampp(apach+mysql+php解释器) f:\mydoc文件(重要)\dl_学习\download重要资源\apache
如下所示: Eclipse快捷键 Ctrl+1 快速修复 Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加) Ctrl+Alt+↑ 复制当前行到上一行(复制增加)
第一步:conn.PHP文件,用于连接数据库并定义接口格式,代码如下: php" id="highlighter_808731">
本篇文章整理了几道Linux下C语言的经典面试题,相信对大家更好的理解Linux下的C语言会有很大的帮助,欢迎大家探讨指正。 1、如果在Linux下使用GCC编译器执行下列程序,输出结果是什么?
安装完最新的Boost库 官方说明中有一句话: Finally, $ ./b2 install will leave Boost binaries in the lib/ subdirecto
为了梳理前面学习的《spring整合mybatis(maven+mysql)一》与《spring整合mybatis(maven+mysql)二》中的内容,准备做一个完整的示例完成一个简单的图书管理功
网站内容质量仅仅是页面综合得分里面的一项.不管算法如何改变调整,搜索引擎都不会丢弃网站页面的综合得分。 一般情况下我们把页面的综合得分为8个点: 1、标题的设置 (标题的设置要有独特性)
最近事情很忙,一个新项目赶着出来,但是很多功能都要重新做,一直在编写代码、debug。今天因为一个新程序要使用fragment来做,虽然以前也使用过fragment,不过没有仔细研究,今天顺道写篇文
Android资源命名规范 最近几个月,大量涉及android资源的相关工作。对于复杂的应用而言,资源命名的规范很有必要。除了开发人员之外,UI设计人员(或者切图相关人员)也需要对资源使用的位置非常
以前一直使用Hibernate,基本上没用过Mybatis,工作中需要做映射关系,简单的了解下Mybatis的映射。 两者相差不多都支持一对一,一对多,多对多,本章简单介绍一对一的使用以及注意点。
如下所示: ? 1
如果想在自定义的View上面显示Button 等View组件需要完成如下任务 1.在自定义View的类中覆盖父类的构造(注意是2个参数的) 复制代码 代码如下: publ
实现功能:实现表格tr拖动,并保存因为拖动改变的等级. jsp代码 ?
代码:测试类 java" id="highlighter_819000"> ?
红黑树是一种二叉平衡查找树,每个结点上有一个存储位来表示结点的颜色,可以是red或black。 红黑树具有以下性质: (1) 每个结点是红色或是黑色 (2) 根结点是黑色的 (3) 如果一个
废话不多说,直接上代码 ? 1
码代码时,有时候需要根据比较大小分别赋值: ? 1
实际项目开发中,我们经常会用一些版本控制器来托管自己的代码,今天就来总结下Git的相关用法,废话不多说,直接开写。 目的:通过Git管理github托管项目代码 1、下载安装Git 1、下载
直接上代码: 复制代码 代码如下: //验证码类 class ValidateCode { private $charset = 'abcdefghkmnprstuvwxyzABC
我是一名优秀的程序员,十分优秀!