在分析平台中使用低代码

亲爱的读者,大家好!



任何公司的业务基于智能加载的服务交付模型或技术复杂的产品的创建,早晚要构建IT平台以用于数据的累积和分析的任务就产生了。建立分析平台是一项艰巨且耗时的任务。但是,任何任务都可以简化。在本文中,我想分享我使用低代码工具来帮助您创建分析解决方案的经验。在Neoflex公司的大数据解决方案方向的多个项目的实施过程中获得了这种经验。自2005年以来,Neoflex的大数据解决方案方向一直在处理建立数据存储和湖泊的问题,解决优化信息处理速度的问题,并致力于管理数据质量的方法。







没有人能够避免蓄意存储弱和/或高度结构化的数据。也许即使我们在谈论小型企业。确实,在扩大业务规模时,有前途的企业家将面临制定忠诚度计划的问题,想要分析销售点的有效性,考虑针对性广告,并对配套产品的需求感到困惑。作为第一近似,可以在膝盖上解决问题。但是随着业务的增长,进入分析平台仍然是不可避免的。



但是,在什么情况下数据分析任务可以成长为“火箭科学”类的任务?也许在那一刻,当涉及到真正的大数据时。

为了简化“火箭科学”任务,您可以逐一吃掉大象。







您的应用程序/服务/微服务拥有的自由裁量权和自治权越多,您,您的同事和整个企业就越容易消化大象。



根据DevOps团队的工程实践,几乎我们所有的客户都遵循了这一假设,重新构建了格局。



但是,即使采用“分开的大象”饮食,我们也很有可能出现IT领域“过饱和”的情况。在这一点上,值得停下来,喘口气,并期待着低代码工程平台



当从低级代码系统的UI界面中直接编写代码转向“拖动”箭头时,许多开发人员对他们职业生涯陷入僵局的前景感到恐惧。但是机床的出现并没有导致工程师的消失,反而使他们的工作达到了一个新的高度!



让我们找出原因。



物流,电信行业,媒体研究,金融领域的数据分析始终与以下问题相关:



  • 自动分析速度;
  • 在不影响数据生成主流的情况下进行实验的能力;
  • 所准备数据的可靠性;
  • 跟踪更改和版本控制;
  • 数据来源,数据沿袭,CDC;
  • 快速向生产环境交付新功能;
  • 和谚语:开发和支持成本。


也就是说,工程师拥有大量的高级任务,只有清除他们对低级开发任务的意识,这些任务才能以足够的效率执行。



业务的发展和数字化成为开发人员过渡到新水平的先决条件。开发人员的价值也在发生变化:严重缺乏开发人员的人们无法深入研究自动化业务的概念。



让我们用低级和高级编程语言进行类比。从低级语言到高级语言的转变是从编写``用铁的语言的直接指令''到``用人的语言的指令''的转变。也就是说,添加了一些抽象层。在这种情况下,从高级编程语言到低代码平台的过渡是从``以人的语言编写的指令''到``以业务语言编写的指令''的过渡。如果有些开发人员对此感到难过,那么他们甚至在使用数组排序功能的Java Script诞生之初就感到难过。这些功能当然可以通过相同的高级编程的其他方式在后台进行软件实现。



因此,低代码仅仅是另一层抽象的出现。



使用低码的应用经验



低代码的主题非常广泛,但是现在我想以我们的一个项目为例来讨论“低代码概念”的应用。



Neoflex公司的大数据解决方案部门在很大程度上专注于业务金融领域,构建存储和数据湖以及自动执行各种报告。在这个利基市场中,低代码的使用早已成为一种标准。其他低代码工具包括用于组织ETL流程的工具:Informatica Power Center,IBM Datastage,Pentaho Data Integration。或Oracle Apex,它充当快速开发用于访问和编辑数据的界面的环境。但是,使用低代码开发工具并不总是与在商业技术堆栈上构建高度有针对性的应用程序相关联,而这明显依赖于供应商。



使用低代码平台,您还可以组织数据流的编排,创建数据科学平台或例如数据质量控制模块。



Neoflex与Mediascope(俄罗斯媒体研究市场的领导者之一)之间的合作是使用低代码开发工具的经验的应用实例之一。该公司的业务任务之一是数据的生产,广告商,互联网站点,电视频道,广播电台,广告代理商和品牌在此基础上决定购买广告并计划其营销传播。







媒体研究是技术密集型业务领域。识别视频序列,从用于分析观看的设备中收集数据,测量Web资源上的活动-所有这些都意味着公司拥有大量的IT人员,并且在构建分析解决方案方面拥有丰富的经验。但是,信息量,其来源的数量和种类的指数增长使IT数据行业不断发展。扩展已经运行的分析平台Mediascope的最简单解决方案可能是增加IT人员。但是,更有效的解决方案是加快开发过程。朝这个方向迈进的步骤之一可能是使用低代码平台。



在项目开始时,该公司已经有了一个功能完备的产品解决方案。但是,该解决方案在MSSQL中的实现无法完全满足扩展功能的期望,同时保持可接受的修订成本。



摆在我们面前的任务确实是艰巨的-Neoflex和Mediascope必须在不到一年的时间内创建一个工业解决方案,前提是MVP必须在开始工作之日的第一季度内发布。



Hadoop技术栈被选为构建基于低码计算的新数据平台的基础。 HDFS已成为使用镶木地板文件进行数据存储的标准。为了访问平台中的数据,使用了Hive,其中所有可用的店面都以外部表的形式显示。使用Kafka和Apache NiFi将数据加载到存储中。



此概念中的lowe-code工具用于优化构建分析平台中最费力的任务-计算数据的任务。







选择低码数据报工具作为数据映射的主要机制。Neoflex Datagram是用于设计转换和数据流的工具。

使用此工具,您可以避免“手工”编写Scala代码。Scala代码是使用“模型驱动的体系结构”方法自动生成的。



这种方法的一个明显的优点是可以加快开发过程。但是,除了速度之外,还具有以下优点:



  • 查看来源/目的地的内容和结构;
  • 跟踪数据流对象的起源到各个字段(谱系);
  • 部分执行转换并查看中间结果;
  • 查看源代码并在执行前对其进行更正;
  • 自动验证转换;
  • 自动以1合1加载数据。


输入用于生成转换的低代码解决方案的门槛非常低:开发人员需要了解SQL并具有ETL工具的经验。应该注意的是,从广义上讲,代码驱动的转换生成器不是ETL工具。低代码工具可能没有自己的代码执行环境。也就是说,即使在安装低码解决方案之前,生成的代码也将在集群上的环境中执行。这也许是低码因果的另一个优点。因为与低代码命令并行,“经典”命令可以工作,因此可以例如以纯Scala代码实现功能。将两个团队的工作投入生产将是简单而无缝的。



也许值得注意的是,除了低代码,还有无代码解决方案。从本质上讲,它们是不同的事物。低代码允许开发人员在更大程度上干扰生成的代码。对于数据报,可以查看和编辑生成的Scala代码,没有代码可能不会提供这样的机会。这种差异不仅在解决方案灵活性方面非常重要,而且在数据工程师工作的舒适性和动力方面也非常重要。



解决方案架构



让我们尝试找出低代码工具到底如何帮助解决优化数据计算功能开发速度的问题。首先,让我们看一下系统的功能架构。在这种情况下,一个例子就是用于媒体研究的数据生产模型。







在我们的案例中,数据源非常多样化且多种多样:



  • (-) — - , – , , . – . Data Lake , , , . , , ;
  • ;
  • web-, site-centric, user-centric . Data Lake research bar VPN.
  • , - ;
  • -.


从源系统加载到原始数据的主要暂存中的原样实现可以通过各种方式进行组织。如果将低代码用于这些目的,则可以基于元数据自动生成启动脚本。在这种情况下,无需深入到源到目标映射的开发水平。要实现自动加载,我们需要与源建立连接,然后在加载界面中定义要加载的实体列表。 HDFS中目录结构的创建将是自动的,并且将与源系统中的数据存储结构相对应。



但是,在此项目的背景下,由于Mediascope已经独立开始在Nifi + Kafka链接上生产类似服务的事实,我们决定不使用低代码平台的机会。



应当立即指出,这些工具不是可互换的,而是彼此补充的。 Nifi和Kafka既可以直接捆绑(Nifi-> Kafka),也可以反向捆绑(Kafka-> Nifi)工作。对于媒体研究平台,使用了第一个链接。







在我们的案例中,我需要处理来自源系统的各种类型的数据,并将其发送给Kafka经纪人。同时,使用PublishKafka Nifi处理器将消息定向到特定的Kafka主题。这些管道的编排和维护是在可视界面中完成的。 Nifi工具和Nifi + Kafka捆绑软件的使用也可以称为低代码开发方法,这种方法对进入大数据技术的门槛较低,并可以加快应用程序开发过程。



该项目实施的下一阶段是简化详细数据的单个语义层的格式。如果实体具有历史属性,则在相关分区的上下文中执行计算。如果该实体不是历史实体,则可以选择重新计算对象的全部内容,或者完全拒绝重新计算该对象(由于没有更改)。在此阶段,将为所有实体生成密钥。密钥保存在与主对象相对应的Hbase目录中,其中包含分析平台中的密钥与源系统中的密钥之间的对应关系。原子实体的固结伴随着分析数据的丰富和初步计算的结果。计算数据的框架是Spark。所描述的将数据转换为单个语义的功能还基于低代码工具数据报的映射来实现。



目标体系结构需要为业务用户提供SQL数据访问。Hive用于此选项。在低代码工具中启用“注册配置单元表”选项时,对象将自动在配置单元中注册。







付款流程控制



数据报具有用于构建工作流设计的界面。可以使用Oozie调度程序启动映射。在流开发人员的界面中,可以创建并行,顺序或依赖于指定条件的方案来执行数据转换。支持shell脚本和Java程序。也可以使用Apache Livy服务器。Apache Livy用于直接从开发环境运行应用程序。



如果公司已经拥有自己的流程协调器,则可以使用REST API将映射嵌入到现有流中。例如,我们在将Scala映射嵌入以PLSQL和Kotlin编写的编排器中具有相当成功的经验。低代码工具的REST API意味着存在以下操作:根据映射设计生成可执行年,调用映射,调用一系列映射,以及将参数传递给URL以启动映射。



与Oozie一起,可以使用Airflow来组织计算流程。也许我不会长期关注Oozie和Airflow的比较,但我只是说,在开展媒体研究项目的过程中,选择落在了Airflow上。这次的主要争论结果是开发该产品的社区更加活跃,并且接口+ API也更加发达。



气流也很不错,因为它使用了最受欢迎的Python来描述计算过程。通常,没有太多的开源工作流管理平台。启动和监视流程(包括带有甘特图的流程)的执行只会为Airflow的业力增加点。



用于运行低代码解决方案映射的配置文件的格式为spark-submit。发生这种情况有两个原因。首先,spark-submit允许您直接从控制台运行jar文件。其次,它可以包含配置工作流程所需的所有信息(这使得编写组成Dag的脚本更加容易)。

在我们的案例中,Airflow工作流程中最常见的元素是SparkSubmitOperator。



SparkSubmitOperator允许您运行jar`niks-带有预输入参数的打包数据报映射。



应该提到的是,每个Airflow任务都在单独的线程上运行,而对其他任务一无所知。就此而言,任务之间的交互是使用控件操作符(例如DummyOperator或BranchPythonOperator)执行的。



总体而言,将Datagram低代码解决方案与配置文件的通用性(形成Dag)结合使用,可以大大加速和简化开发数据下载流的过程。



展示柜计算



分析数据生成中最智能的加载阶段可能是店面构建步骤。在研究公司的数据流之一的情况下,在此阶段,考虑到针对广播网格的时区校正,转换为参考广播。也可以针对本地广播网络(本地新闻和广告)进行调整。其中,此步骤基于对观看时间间隔的分析,打破了媒体产品的连续观看时间间隔。立即,基于有关其重要性的信息(校正因子的计算)对观看值进行``加权''。







数据验证是准备数据集市的单独步骤。验证算法使用许多数学科学模型。但是,使用低代码平台可以将复杂的算法分解为许多单独的,视觉上可读的映射。每个映射执行一个狭窄的任务。因此,可以进行数据准备阶段的中间调试,记录和可视化。



决定将验证算法离散化为以下子阶段:



  • 绘制区域中观看电视网络与观看区域中所有网络60天的依存关系的回归图。
  • 计算所有回归点和计算日的学生化残差(实际值与回归模型预测的残差)。
  • 异常区域网络对的样本,其中计算出的日期的学生剩余时间超出了正常值(由操作设置指定)。
  • 当从样本中排除该受访者时,针对在该区域中查看过网络的每个受访者,重新计算针对异常区域-网络对的校正后的学生化余数,并确定该受访者的贡献(学生化余数变化的值)。
  • 搜索候选人,排除该候选人会使结算日的学生化余额恢复正常。


上面的示例证实了一个假设,即数据工程师无论如何都应该拥有过多的头脑……如果这确实是“工程师”而不是“编码者”,那么在使用低代码工具时会担心专业性能下降他必须最终撤退。



低代码还能做什么?



无需手动编写Scala代码即可批处理和流式传输数据的低代码工具的范围并不止于此。



在数据湖的开发中使用低代码已成为我们的标准。也许我们可以说,Hadoop堆栈上的解决方案遵循了基于RDBMS的经典DWH的开发路径。 Hadoop堆栈上的低代码工具可以解决数据处理任务和构建最终BI接口的任务。此外,应该注意的是,BI不仅可以表示数据的表示,还可以表示由业务用户推动的数据编辑。在为金融部门构建分析平台时,我们经常使用此功能。







除其他事项外,通过使用低代码(尤其是数据报),可以解决将原子性的数据流对象的起源跟踪到各个字段(谱系)的问题。为此,低代码工具实现了与Apache Atlas和Cloudera Navigator的接口。实际上,开发人员需要在Atlas词典中注册一组对象,并在构建映射时引用已注册的对象。如果需要改进计算算法,则用于跟踪数据源或分析对象依存关系的机制可以节省大量时间。例如,在构建财务报表时,此功能使您可以更轻松地度过立法变更期。毕竟,我们对详细层对象的上下文中的相互依存关系了解得更好,我们遇到“突然的”缺陷并减少返工的次数就越少。







数据质量和低码



由Mediascope项目上的低代码工具实现的另一个任务是数据质量类的任务。研究公司项目的数据验证管道实施的一个特点是对主数据流的性能和速度没有影响。熟悉的Apache Airflow用于通过独立线程来编排数据验证。当数据制作的每个步骤准备就绪时,并行启动DQ管道的单独部分。



优良作法是从分析平台开始监测数据质量。有了有关元数据的信息,我们可以从信息进入主层的那一刻起,检查是否满足基本条件-不是null,约束,外键。此功能是根据Datagram中数据质量系列的自动生成的映射实现的。在这种情况下,代码生成也基于模型元数据。在Mediascope项目上,该接口与Enterprise Architect产品的元数据一起使用。



通过将低代码工具与Enterprise Architect配对,将自动生成以下检查:



  • 使用“ not null”修饰符检查字段中是否存在“ null”值;
  • 检查是否存在主键重复项;
  • 实体外键验证;
  • 根据一组字段检查字符串的唯一性。


为了进行更复杂的数据可用性和有效性检查,创建了一个Scala Expression映射,该映射接受Zeppelin分析人员准备的外部Spark SQL检查代码。







当然,有必要逐渐进入自动生成支票的过程。在所述项目的框架内,执行以下步骤:

  • Zeppelin笔记本中实现了DQ;
  • DQ嵌入映射中;
  • DQ采用单独的大量映射的形式,包含对特定实体的整套检查;
  • 通用参数化DQ映射,接受元数据和业务验证信息作为输入。


创建参数化检查服务的主要优势也许是减少了向生产环境交付功能的时间。新的质量检查可以绕过通过开发和测试环境间接交付代码的经典模式:



  • 当模型在EA中更改时,将自动生成所有元数据检查;
  • 数据可用性检查(确定某个时间点上是否存在任何数据)可以基于一个目录生成,该目录存储对象上下文中下一数据出现的预期时间;
  • 业务数据合理性检查是由Zeppelin笔记本中的分析师创建的。他们从那里直接进入生产环境中的DQ模块设置表。


这样就没有将脚本直接运送到生产环境的风险。即使存在语法错误,威胁我们的最大风险仍然是无法执行一项检查,因为数据计算的流程与启动质量检查的流程是相互分离的。



实际上,DQ服务在生产环境中永久运行,并准备在下一个数据出现时开始其工作。



而不是结论



使用低代码的优势是显而易见的。开发人员不需要从头开始开发应用程序。从其他任务中解放出来的程序员可以更快地获得结果。反过来,速度则释放了更多的时间来解决优化问题。因此,在这种情况下,您可以依靠更好,更快的解决方案。



当然,低代码不是万能的药,魔术不会自己发生:



  • 低码行业正处于“成长”阶段,到目前为止,还没有统一的行业标准。
  • 许多低码解决方案不是免费的,购买它们应该是有意的一步,应该对使用它们带来的经济利益充满信心。
  • GIT / SVN. ;
  • – , , « » low-code-.
  • , low-code-. . / IT- .






但是,如果您知道所选系统的所有缺点,并且使用它所带来的好处仍然占主导地位,那么请放心使用小型代码。此外,向它过渡是不可避免的-因为任何演变都是不可避免的。



如果低代码平台上的一名开发人员比没有低代码平台的两名开发人员能够更快地完成工作,那么这将使该公司在各个方面都处于领先地位。进入低代码解决方案的门槛低于“传统”技术,这对人员短缺问题产生了积极影响。使用低代码工具时,可以加速职能团队之间的互动,并可以更快地决定所选数据科学研究路径的正确性。低级平台可以推动组织的数字化转型,因为所产生的解决方案可以被非技术专家(特别是业务用户)理解。



如果您的截止日期很紧,业务逻辑繁忙,缺乏技术专业知识,并且需要加快产品上市时间,那么低代码就是满足您需求的一种方法。



不可否认传统开发工具的重要性,但是在许多情况下,使用低代码解决方案是提高所解决问题的效率的最佳方法。



All Articles