企业通过传统的线下数据分析,只能对历史数据进行事后分析。然而,随着数据量的爆发式增长以及市场环境和业务需求的快速变化,企业对数据时效性的要求越来越高。例如,在互联网行业,客户需要满足用户对个性化产品和服务的需求;在金融行业,企业需要更快速地进行风险控制和趋势分析;在新零售行业,企业需要更快速地获取销售数据,做出经营决策等。因此,企业需要实时数据计算能力来满足实时数据分析的需求。1实时开发痛点在实时任务的开发过程中,任务调试是整个开发过程中比较耗时和繁琐的环节。在调试阶段,用户普遍面临以下痛点。1.1任务频繁上线下线。在调试过程中,需要验证任务代码的逻辑是否正确,任务配置参数是否合理。需要重复任务上线、运行、下线调整、重启的过程。(实时任务开发过程)1.2需要创建测试结果表由于实时任务在调试过程中需要不断提交到线上运行,在调试过程中会产生脏数据,所以一般都是需要创建测试结果表进行调试。调试完成后,通过修改代码将结果表替换成官方的结果表。这个换表的过程涉及代码变更,可能会引入新的问题,同时维护测试表需要额外的成本。1.3无法使用特定的测试数据进行调试任务真正在线运行时,使用的源数据是任务中指定的源。大多数实时任务使用消息队列中的流数据作为源。如果要调试该阶段使用特定的测试数据进行调试,用户需要在源中插入指定的数据,或者使用测试源表,调试完成后替换为官方源表在正式发布之前。操作复杂,更换源或插入数据时也可能引入新的问题。2痛点解决方案针对以上痛点,几款实时计算平台都提供了相应的解决方案,即实时开发调试功能。调试功能分为两步。第一步是获取调试数据,第二步是使用调试数据进行任务本地调试。2.1获取调试数据在获取调试数据这一步中,目前提供了在线采样、上传本地数据、测试数据在线维护等功能。用户可以直接使用在线采样功能对任务中使用的源表进行采样,采样数据可以直接用于后续的调试过程。为满足用户希望使用特定测试数据进行任务调试的需求,平台支持用户在线采样后对采样结果进行编辑保存。保存采样数据后,该数据将被记录为该任务的长期可重用调试数据。有任务。另外,用户也可以下载源端数据结构文件,自行填写源端数据,上传到任务中,保存为本次任务的测试样本。2.2任务本地调试用户获取调试样本数据后,无需在线提交任务即可开始调试。同时任务的调试结果不会写入结果表,只会在开发IDE中显示,方便用户确认代码逻辑是否正确。通过任务本地调试功能,省去了用户频繁在线任务的过程,也省去了创建测试结果表和替换结果表代码的过程,提高了实时任务开发的效率,保证了实时任务开发的效率。在线数据的安全性。(使用调试功能后的实时任务开发过程)通过调试任务功能,用户可以在开发过程中验证代码逻辑。后续无数实时计算平台将不断优化运行参数,彻底解决用户实时任务调试难的问题。3应用案例3.1案例场景业务方需要使用产品销售结果的实时数据进行报表展示,数据处理团队需要使用Kafka消息队列中的产品实时销售数据关联MySQL维度包含商品详情的表,并将结果写入MySQL结果表中国供应商端查询。3.2开发前要用到的Kafka主题:testgoods,数据预览:使用的MySQL维表:goods_info,包括产品ID和产品名称,数据预览:表结构:3.3创建任务(1)创建SQL任务(2)写业务逻辑set'testgoods.connections.group.id'='mysql_join_example';--设置Kafka消费者组id,需要改成自己命名的groupidset'testgoods.scan.startup.mode'='earliest-offset';--设置读取消息队列的位置createviewv1asselectPROCTIME()asproctime,itemID,itemType,onSellTime,pricefrompoc.testgoods;insertinto`ljy_test_mysql`.`sloth_test`.`goods_join_mysql_sink`selectv1.itemID,v1.itemType,v1.onSellTime,v1.price,goods_info.itemNameasitemNamefromv1leftjoin`ljy_test_mysql`.`sloth_test`.`goods_info`FORSYSTEM_TIMEASofv1.proctimeonv1.itemID=goods_info.itemID;3.4调试任务(1)源表和维表采样点击页面的添加源按钮,选择源块中的源表和维表,点击源块中的调试按钮进行采样。Sourcetablesourceblock:这里Kafka的topic:testgoods是预先注册为流表的,所以有数据库和表可以选择。源表采样结果:维度表源块:维度表采样结果:获取采样结果后,双击结果栏中的值修改样本数据,点击保存按钮将样本保存为正式样本后续调试。(2)调试任务点击SQL块操作栏中的调试按钮,系统会自动分析代码中使用的源表和维表,并显示在调试侧边栏中,用户选择好要使用的样本数据后每个源表和维度表,都可以开始调试任务代码,调试结果显示在代码框下方。调试结果符合用户预期,代码逻辑验证通过,可以在线提交任务。4优数实时计算平台简介目前,ApacheFlink已经成为大数据实时计算的事实标准,具有高性能和低延迟的特点。不过作为开源产品,ApacheFlink的社区版并没有在产品化方面投入太多的精力。因此,企业用户在使用社区版Flink时,开发门槛高,运维成本高。为了解决这些问题,我们构建了基于ApacheFlink的一站式、企业级、高性能的实时大数据处理系统。在开发方面,为用户提供任务开发的一站式开发控制台,提供元数据管理的元数据中心,内置丰富的连接器实现开箱即用的效果,保证与大用户使用的数据组件Docking提供UDF管理功能、在线调试功能、版本管理功能,大大降低了实时计算任务的开发门槛。在运维方面,基于元数据中心提供全链路监控告警、任务检索和任务血缘关系,帮助用户快速发现和定位问题,并提供企业级权限管理,保障线上数据安全。(有数实时计算平台与ApacheFlink功能对比)(有数实时计算平台架构)作者简介贾宇,网易数帆有数实时计算平台产品经理。
