2.2 HuggingFists中的编程语言

news/2024/9/28 4:25:38/

        HuggingFists系统提供的可视化流程定义功能与传统的ETL或数据挖掘工具类似。使用者可以通过拖拽,可视化的定义出数据处理的管道(Pipe)或数据分析的图(Graph)。传统上,使用者只是将这种可视化流程定义方式视为一种配置功能而未将其理解为一种编程行为。主要是由于很少有工具能同时支持数据不同处理阶段流程的构建,比如ETL和数据分析两个阶段,这两类工作往往由不同的工具实现。但HuggingFists的理念是能够支持数据采集、处理、分析及共享多个阶段。因此,需要拥有更强大的数据流程定义能力,能够满足不同阶段的数据处理要求。

        为此HuggingFists定义了一套可视化编程语言--VO(Visual Operator),该语言可视为一个面向数据科学处理与计算的领域描述语言(DSL)。之所以将其称为语言,是因为其拥有很多其他通用开发语言的特征,比如:支持常量、变量、函数、异常等;也有VO语言特有的语法概念,比如:算子、子流程、参数变量、水位线等。通常情况下,使用者不需要有编程经验,也无需了解太多VO语言的语法概念,只要简单通过界面拖拽算子,设置参数就可以完成一个数据处理流程的编写。操作体验上更接近RPA与传统数据科学工具的感受。只有当需要处理与分析的数据流程比较复杂时,才会用到一些语言级别的概念。学习这些概念虽然会带来一些学习成本,一旦掌握,可以轻松解决复杂数据场景的问题,并获得高效的并行运行体验。VO语言详细介绍参见下一章。

        除了VO语言外,HuggingFists还支持SQL、Python、Javascript等语言,使用者可以在适当的时候运用这些语言来增强数据处理的能力。

        目前除了图数据库之外,HuggingFists对集成的所有数据库类型的数据源都支持使用SQL方言进行访问。之所以称之为方言是因为,其语法并非标准SQL语法,而是根据数据库特定的访问方式做了二次语法封装。这是一个很大的工程,但HuggingFists为了尽量给用户一个统一访问数据库数据源的方式,还是做了这样的一个转换工作。比如:ElasticSearch原本只支持DSL方式访问、MongoDB、Milvus只支持SDK,但在HuggingFists系统中,使用者都可以用SQL访问各个数据源。

        对于图类型数据库,由于国际上一直没有推出GQL标准,因此HuggingFists采用了Cypher语言作为图数据库的访问语言。目前HuggingFists支持了Neo4j和Nebula两款图数据库。对于其它不支持Cypher语言的图数据库,HuggingFists由于暂无能力做兼容性整合,故尚未支持。

        Python是HuggingFists系统的另一大开发语言。鉴于其在数据算法领域的广泛应用,拥有数万种算法包。HuggingFists在算法类算子中大量应用了Python脚本,特别是在深度学习领域,可以极其便利的整合各类成熟的算法实现。

        Javascript语言是由脚本算子引入系统的。主要方便熟悉Javascript语言的用户可以扩展算子的功能。但是,这种方式只适合较小的功能扩展,比如:对数据进行特别的公式计算,特别的抽取等。当扩展功能需要引入第三方依赖时,需要安装依赖,整合环境,会比较繁琐。HuggingFists除了支持Javascript脚本算子外,还支持Python脚本算子,未来还可能根据需要,扩展更多的编程语言。


http://www.ppmy.cn/news/1531013.html

相关文章

C#实现指南:将文件夹与exe合并为一个exe

在软件开发过程中,有时需要将多个文件(如资源文件、配置文件等)与可执行文件(exe)打包在一起,以便于分发和部署。在C#中,我们可以利用ILMerge或Costura.Fody等工具来实现这一目标。本文将介绍如…

JavaSE——lombok、juint单元测试、断言

一、lombok的使用 默认jvm不解析第三方注解,需要手动开启 链式调用 二、juint单元测试 下载juint包 public class TestDemo {// 在每一个单元测试方法执行之前执行Beforepublic void before() {// 例如可以在before部分创建IO流System.out.println("befor…

《经典图论算法》约翰逊算法(Johnson)

摘要: 1,约翰逊算法的介绍 2,约翰逊算法的实现步骤 3,约翰逊算法的准确性验证 4,约翰逊算法的代码实现 1,约翰逊算法的介绍 约翰逊算法(Johnson algorithm)是在稀疏图上求每对顶点之间最短路径的一种算法&a…

【重学 MySQL】三十九、Having 的使用

【重学 MySQL】三十九、Having 的使用 基本语法示例示例 1:使用 HAVING 过滤分组示例 2:HAVING 与 WHERE 的结合使用 注意点WHERE 与 HAVING 的对比基本定义与用途主要区别示例对比总结 在 MySQL 中,HAVING 子句主要用于对 GROUP BY 语句产生…

【linux】地平线RDK X3派配置音频驱动板:Audio Driver HAT V2

1、简述 地平线RDK X3不带音频功能,需要配置音频驱动板卡或者USB转音频模块。 参考网址: 1)RDK X3系列音频板使用指南: https://developer.d-robotics.cc/rdk_doc/Basic_Application/audio/audio_board_x3 2)Audio Driver HAT REV2 微雪电子购买链接: https://www.wav…

改进拖放PDF转换为图片在转换为TXT文件的程序

前段时间我写了Python识别拖放的PDF文件再转成文本文件-CSDN博客 最近有2点更新,一是有一些pdf文件转换出来的图片是横的,这样也可以识别文字,但是可能会影响效果,另一个是发现有一些文字识别不出来,看了关于提高Padd…

Python--操作列表

1.for循环 1.1 for循环的基本语法 for variable in iterable: # 执行循环体 # 这里可以是任何有效的Python代码块这里的variable是一个变量名,用于在每次循环迭代时临时存储iterable中的下一个元素。 iterable是一个可迭代对象,比如列表(…

OJ在线评测系统 后端 使用代理模式编写测试类 并 实现核心业务判题流程

编写测试类(代理模式) 实现示例的代码沙箱 package com.dduo.dduoj.judge.codesandbox.impl;import com.dduo.dduoj.judge.codesandbox.CodeSandbox; import com.dduo.dduoj.judge.codesandbox.model.ExecuteCodeRequest; import com.dduo.dduoj.judge.codesandbox.model.Exec…