-
MRS 3.1.0普通集群怎么安装开源的flink组件,求助各位大神
-
前言 WebService/Restful广泛应用于程序间通讯,如微服务、数据交换、公共或私有的数据服务等。之所以如此流行,主要是因为WebService/Restful采用了XML/Json这类多层结构化数据进行信息传递。XML/Json不仅是文本格式,而且支持多层结构,可承载足够通用和足够丰富的信息。但多层结构要比传统的二维表复杂,取数后再处理的难度也大。 背景 早期,没有专业的json/XML的后处理技术,Java开发者通常要采取硬写代码或入库再用SQL的方式。硬写代码工作量巨大,计算能力几乎为零,开发效率极低。SQL虽然可以提供部分计算能力,但存在明显的架构缺陷,不仅会因为引入SQL而制造额外的耦合性,而且会因为入库过程导致额外的系统延迟。此外,数据库只适合计算二维表,多层结构化数据的计算能力并不强。 后来,XPath/JsonPath、Python Pandas、Scala这类专业的json/XML的后处理技术出现了,才终于在保证较好架构性的同时,提供了一定的计算能力。但这些技术也存在各自的问题,XPath/JsonPath只支持条件查询和简单聚合,不支持一般的日常计算,比如排序、去重、分组汇总、关联、交集等,而且没有自己的多层数据对象,计算能力较差。 Python Pandas支持一般的日常计算,其数据对象dataFrame能描述二维表,但计算处理多层数据并不方便,而且和Java应用的集成性很不好。Scala的数据对象dataFrame也类似,可以描述多层结构,但计算处理也不方便。此外,Scala和Pandas对XML支持得都不好,要手工进行类型转换,或引入第三方类库,开发效率不高。 所以,SPL是个更好的选择。 专业多层数据对象 SPL是JVM下开源的结构化数据/多层数据处理语言,内置专业的多层数据对象和方便的层次访问方法,可以表达复杂的层次关系,为上层计算能力提供有力的支持。 SPL提供了专业的多层数据对象序表,可以直观地表现XML\Json的层级结构。 比如,从文件读取多层XML串,解析为序表: A 1 =file(“d:\xml\emp_orders.xml”).read() 2 =xml(A1,“xml/row”) 点击A2格可以看到多层序表的结构,其中,EId、State等字段存储简单数据类型,Orders字段存储记录集合(二维表)。点击Orders中的某一行,可以展开观察数据: 序表也可以表达来自文件的多层Json(与上面的XML同构): A 1 =file(“d:\xml\emp_orders.json”).read() 2 =json(A1) 点击A2格可以看到,来自Json的序表与来自XML的序表一样。事实上,SPL序表可以统一地表达不同来源的多层数据,无论XML还是Json,无论WebService还是Restful,这是其他技术难以做到的。 SPL提供了方便的多层数据访问方法,可以通过点号访问不同的层级,通过下标访问不同的位置。 第1层的单个字段的集合:A2.(Client) 第1层的多个字段的集合:A2.([Client,Name]) 第2层所有记录的集合:A2.conj(Orders) 第1层第10条记录:A2(10) 第1层第10条记录的Orders字段(即所有下层记录):A2(10).Orders 第1层第10条件记录Orders字段的单个字段的集合:(A2(10).Orders).(Amount) 第1层第10条件记录Orders字段的第5条记录:(A2(10).Orders)(5) 第1层的第10-20条记录:A2(to(10,20)) 第1层的最后三条记录:A2.m([-1,-2,-3]) SPL序表专业性强,可以表达复杂的层次关系。比如,针对多含多个子文档的多层Json: [ { "race": { "raceId":"1.33.1141109.2", "meetingId":"1.33.1141109" }, ... "numberOfRunners": 2, "runners": [ { "horseId":"1.00387464", "trainer": { "trainerId":"1.00034060" }, "ownerColours":"Maroon,pink,dark blue." }, { "horseId":"1.00373620", "trainer": { "trainerId":"1.00010997" }, "ownerColours":"Black,Maroon,green,pink." } ] }, ... ] 进行不同层级的分组汇总(对trainerId分组,统计每组中 ownerColours的成员个数),一般的技术难以写出代码,SPL就简单多了: A 1 … 2 =A1(1).runners 3 =A2.groups(trainer.trainerId; ownerColours.array().count():times) 强大计算能力 以序表为基础,SPL内置丰富的计算函数、日期函数、字符串函数,提供了强大的计算能力。依靠函数选项、层次参数等高级语法,SPL提供了超越SQL的计算能力。 SPL内置丰富的计算函数,基础计算一句完成。比如,对多层数据进行条件查询: A 2 …//省略取数解析 3 =A2.conj(Orders) 4 =A3.select(Amount>1000 && Amount<=2000 && like@c(Client,“business”)) 可以看到,SPL对条件查询的支持很完整,包括关系运算符、逻辑运算符、正则表达式和字符串函数,如模糊匹配like。此外,SPL还支持在条件查询中使用数学运算符(函数)、位置函数、日期函数。 更多例子: A B 2 … 3 = A3.sum(Salary) 聚合 4 =A2.groups(State,Gender;avg(Salary),count(1)) 第1层分组汇总 5 =A2.conj(Orders).groups(Client;sum(Amount)) 第2层分组汇总 6 =A1.new(Name,Gender,Dept,Orders.OrderID,Orders.Client,Orders.Client,Orders.SellerId,Orders.Amount,Orders.OrderDate) 关联 7 =A1.sort(Salary) 排序 8 =A1.id(State) 去重 9 =A2.top(-3;Amount) topN 10 =A2.groups(Client;top(3,Amount)) 组内TopN(窗口函数) SPL内置大量日期函数和字符串函数,在数量和功能上远远超过其他技术甚至SQL,同样的运算代码量更短。比如: 时间类函数,日期增减:elapse("2020-02-27",5) //返回2020-03-03 星期几:day@w("2020-02-27") //返回5,即星期6 N个工作日之后的日期:workday(date("2022-01-01"),25) //返回2022-02-04 字符串类函数,判断是否全为数字:isdigit("12345") //返回true 取子串前面的字符串:substr@l("abCDcdef","cd") //返回abCD 按竖线拆成字符串数组:"aa|bb|cc".split("|") //返回[“aa”,“bb”,“cc”] SPL还支持年份增减、求年中第几天、求季度、按正则表达式拆分字符串、拆出SQL的where或select部分、拆出单词、按标记拆HTML等功能。 SPL提供了函数选项、层次参数等方便的函数语法,可以提供更强的计算能力。功能相似的函数可以共用一个函数名,只用函数选项区分差别。比如select函数的基本功能是过滤,如果只过滤出符合条件的第1条记录,可使用选项@1: Orders.select@1(Amount>1000) 数据量较大时,用并行计算提高性能,可使用选项@m: Orders.select@m(Amount>1000) 对排序过的数据,用二分法进行快速过滤,可用@b: Orders.select@b(Amount>1000) 函数选项还可以组合搭配,比如: Orders.select@1b(Amount>1000) 结构化运算函数的参数常常很复杂,比如SQL就需要用各种关键字把一条语句的参数分隔成多个组,但这会动用很多关键字,也使语句结构不统一。SPL支持层次参数,通过分号、逗号、冒号自高而低将参数分为三层,用通用的方式简化复杂参数的表达: join(Orders:o,SellerId ; Employees:e,EId) 优化体系结构 SPL内置易于集成的JDBC接口,可有效降低系统耦合性,并支持代码热切换。SPL支持多种多层数据源,可用一致的代码进行计算,使代码易于移植。 SPL提供了通用的JDBC接口,可以被JAVA代码方便地集成。 比如,将前面的SPL代码存为脚本文件,在JAVA中以存储过程的形式调用文件名: Class.forName("com.esproc.jdbc.InternalDriver"); Connection connection =DriverManager.getConnection("jdbc:esproc:local://"); Statement statement = connection.createStatement(); ResultSet result = statement.executeQuery("call groupBy()"); 1 2 3 4 SPL脚本文件外置于JAVA,使计算代码和应用程序分离,可有效降低系统耦合性。SPL是解释型语言,修改后不必重启JAVA应用就可以直接执行,从而实现代码热切换,可保障系统稳定,降低维护难度。 SPL支持来自WebSerivce和Restful的多层数据。比如,从WebService读取多层XML,进行条件查询: A 1 =ws_client(“http://127.0.0.1:6868/ws/RQWebService.asmx?wsdl”) 2 =ws_call(A1,“RQWebService”:“RQWebServiceSoap”:“getEmp_orders”) 3 =A2.conj(Orders) 4 =A3.select(Amount>1000 && Amount<=2000 && like@c(Client,“business”)) 类似地,从Restful取多层Json,进行同样的条件查询: A 1 =httpfile(“http://127.0.0.1:6868/restful/emp_orders”).read() 2 =json(A1) 3 =A2.conj(Orders) 4 =A3.select(Amount>1000 && Amount<=2000 && like@c(Client,“business”)) SPL支持MongoDB、ElasticSearch、SalesForce等特殊数据源中的多层数据,可直接从这些数据源取数并计算。 比如,从MongoDB取多层Json,进行条件查询: A 1 =mongo_open(“mongodb://127.0.0.1:27017/mongo”) 2 =mongo_shell@x(A1,“data.find()”) 3 =A2.conj(Orders) 4 =A3.select(Amount>1000 && Amount<=2000 && like@c(Client,“business”)) 除了多层数据,SPL也支持数据库,txt\csv\xls等文件, Hadoop、redis、Kafka、Cassandra等NoSQL。虽然数据源不同,但在SPL中的数据类型都是序表,因此可以用一致的方法计算多层数据,这样的计算代码也更容易移植。 XPath/JsonPath、Python Pandas、Scala等技术存在各自的缺陷,开发效率不高。SPL内置专业的多层数据对象和方便的层次访问方法,擅长计算结构复杂的多层数据。SPL内置丰富的库函数,提供了超过SQL的计算能力。SPL支持易用的JDBC接口、代码外置能力,支持来自多种文件和网络服务的多层数据源,可大幅提高WebService\Restful取数后的开发效率。 SPL资料 SPL官网 SPL下载 SPL源代码 欢迎对SPL有兴趣的加小助手(VX号:SPL-helper),进SPL技术交流群 ———————————————— 版权声明:本文为CSDN博主「知心宝贝」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_53673551/article/details/125271219
-
华为开源镜像站的Ubuntu镜像界面里sources.list文件的更新是通过sed工具实现如果之前对官方sources.list进行过修改,比如改成过阿里云镜像站、清华镜像站,则sed工具操作会失败建议直接将包含华为镜像站连接的sources.list内容放出来,用户只需进行复制粘贴即可完成更新
-
项目简介项目名称:毕昇Fortran编译器内联动态库函数str_copy项目描述:毕昇Fortran编译器是一款基于classic flang的高性能Fortran编译器,支持Fortran编程语言的编译和运行,提供强大的数值计算和数据处理能力,在科学计算领域应用前景广阔。f90_str_copy_klen是一个实现字符串拷贝功能的动态库函数,本项目是对该动态库函数进行内联,预期提高编译器字符串拷贝的性能。项目导师:peixin-qiao项目开发者:王哲葳,华东师范大学硕士在读项目链接:cid:link_2开发详情方案描述Flang编译器主要由flang1和flang2两个组件组成,其中flang1用于解析Fortran代码并生成中间表示,然后通过flang2生成LLVM IR并输出。本项目的主要任务就是在flang2中对解析出的“f90_str_copy_klen”函数进行内联优化。这个项目的方案分为如下几步:01flang2会获得通过Fortran生成的IR指令列表,遍历该列表,寻找到函数调用指令“I_CALL”。02通过“I_CALL”指令的位置查询所调用的是否为需要被内联的函数,如本项目需要实现的“f90_str_copy_klen”函数的内联。在确认需要内联的函数后开始生成相应的指令,“f90_str_copy_klen”函数的内联指令生成过程如下:将复制后得到的字符串称为目标字符串,待复制的字符串称为输入字符串。首先需要从原先的指令中获得输入字符串并开辟一系列内存空间用于记录目标字符串、输入字符串的起始地址、字符串索引及字符串长度。对每一个输入字符串,从头开始遍历。分别判断当前目标字符串、输入字符串的索引是否小于其长度,如果均符合则将输入字符串中对应索引的字符复制到目标字符串的相应地址中。如果输入字符串索引大于等于其长度则处理下一个输入字符串。如果目标字符串索引大于等于其长度则停止字符串的复制。按照2所述流程依次遍历函数中的输入字符串,直至所有字符串都完成复制。目标字符串索引是否仍小于其长度,若是,则将目标字符串中剩余未被赋值的字符用空格进行补充。将实现上述功能的指令替换掉对应的“I_CALL”指令。03继续flang2中的流程以生成对应的LLVM IR 文件。项目产出☑ 实现了项目方案中所需的功能。☑ 分别用一个字符串、三个字符串作为输入字符串,完成了共十种输入字符串各种长度情况下”f90_str_copy_klen”函数内联的的功能性测试,在这些输入字符串中也包含了一些ASCII码小于32(ASCII码为32表示空格)的特殊字符。十种情况如下:a=blen(a) < len(b)len(a) = len(b)len(a) > len(b)a = b // c // dlen(a) < len(b)len(a) = len(b)len(b) < len(a) < len(b) + len(c)len(a) = len(b) + len(c)len(b) + len(c) < len(a) < len(b) + len(c) + len(d)len(a) = len(b) + len(c) + len(d)len(a) > len(b) + len(c) + len(d)☑ 将“f90_str_copy_klen”在函数中调用一亿次,对内联前后所花费的时间做对比。实验结果显示没有内联时运行花费的时间约为10秒,内联后运行花费的时间约为0.7秒。测试代码如下:主函数:main.f90program main integer :: i character(20) :: a, b, c, d a = "aaaaaaaaaaaaaaa" b = "aaaaaaaaaaaaaaa" c = "aaaaaaaaaaaaaaa" do i = 1, 100000000 call test(a, b, c, d, 20) enddo end字符串拼接拷贝函数:test.f90subroutine test(a, b, c, d, n) integer :: n character(n) :: a, b, c, d d = a // b // c end subroutine测试方法如下:未优化前:$ flang main.f90 -c $ flang test.f90 -O3 -c $ flang main.o test.o -o a.out $ time ./a.out real 0m10.190suser 0m10.180ssys 0m0.004s优化之后(编译选项-Mx,218,0x1使能该优化功能):$ flang main.f90 -c $ flang test.f90 -O3 –c –Mx,218,0x1 $ flang main.o test.o -o a.out $ time ./a.outreal 0m0.706suser 0m0.702ssys 0m0.004s后记除开源之夏外,Compiler SIG还发布了十多个开源实习任务(戳 开源实习1、开源实习2 了解详情),欢迎各位高校生报名参与~
-
而且必须进入bearpi-hm_nano再进行ls才能看见和视频一样的文件
-
活动介绍LLVM是模块化和可重用的编译器和工具链技术的集合。它是许多现代编译器的基础,包括Clang (C/C++/Objective-C)、GHC (Haskell)、DragonEgg(Ada、Fortran、...)、许多商业OpenCL编译器、RenderScript等。LLVM开源社区聚集了众多在LLVM上工作或与LLVM合作的研发人员,在领域内颇具影响力。本次活动是后疫情时期,加拿大多伦多地区首次举行的LLVM/Clang开源社区线下见面活动,欢迎每个对LLVM、Clang、lldb、Polly、Swift、Rust感兴趣的开发者参与讨论。华为多伦多异构编译器实验室资深编译器研究员Amy Wang将就“使用MLIR for AI加速器优化SYCL程序”专题进行演讲,展开讨论,碰撞灵感火花。活动时间东部夏令时间:2022年8月17日 18:00-20:00北京时间:2022年8月18日 06:00-08:00活动地点Room 1, Toronto Public Library – North York Central Library5120 Yonge St, North York, ON, Canada演讲内容主题:Optimizing for SYCL Programs with MLIR for AI Accelerators简介:There is a growing need for higher level abstractions for device kernels in heterogeneous environments, and the multi-level nature of the MLIR infrastructure perfectly addresses this requirement. As SYCL begins to gain industry adoption for heterogeneous applications and MLIR continues to mature, this talk focuses on the effort in targeting SYCL's device code generation for Huawei's AI accelerator. It also covers numerous interesting aspects ranging from runtime support, to SYCLops, an LLVM-to-MLIR converter, to optimizations performed in MLIR.演讲嘉宾Amy Wang is a senior compiler researcher working for Huawei's Heterogeneous Compilers Lab in Markham. Her past research areas include auto-SIMDization, transactional memory and the Java language runtime. Recently, she spends most of her effort in SYCL device code generation targeting Huawei's AI accelerator, a.k.a. the DaVinci chip, using MLIR. She had previously worked in IBM's XL compiler team prior to joining Huawei.参加方式线下活动注册:cid:link_0活动将全程录像并上传至YouTube及B站Compiler SIG介绍Compiler SIG 专注于编译器领域技术交流探讨和分享,包括 GCC/LLVM/OpenJDK 以及其他的程序优化技术,聚集编译技术领域的学者、专家、学术等同行,共同推进编译相关技术的发展。扫码添加 SIG 小助手微信,邀请你进 Compiler SIG 微信交流群。原文转载自 毕昇编译-活动预告 | LLVM Clang开源社区线下见面会--加拿大多伦多地区
-
海量数据的聚合分析如何满足业务要求?如何快速构建跨云、跨边、跨集群的云原生应用?如何快速构建兼容多种推理框架的高性能AI应用?2022年6月16日在华为伙伴暨开发者大会上,华为云公布四大重磅开源项目, 旨在帮助开发者解决上述问题。openGemini:openGeminiKurator:kurator-dev · GitHubKappital:Kappital · GitHubModelBox:ModelBox | ModelBox是一套统一的端边云AI应用开发和运行框架的规范,以及在此规范上所实现的运行时框架。...#华为伙伴暨开发者大会2022# #华为云#
上滑加载中
推荐直播
-
华为云码道 × 仓颉编程:工程化AI编码探索2026/05/27 周三 19:00-21:00
刘俊杰-华为云仓颉语言专家/李炎-华为云码道技术专家/王智鹏-OpenCangjie开源社区发起人
本场直播围绕华为云仓颉语言与华为云码道的深度结合,展示华为云智能编程从零基础到高效落地的完整生态能力。以华为云码道为引擎,仓颉语言为载体,带给大家日常提效、趣味创新到极速量产的开发体验。
即将直播
热门标签