首页 > 其他分享 >有什么轻量级的大数据技术

有什么轻量级的大数据技术

时间:2022-12-06 13:31:34浏览次数:45  
标签:技术 192.168 A1 Amount SPL 计算 8281 数据 轻量级


一、大数据形式

流行的大数据技术有Hadoop, Storm, Hive、Spark等,这些都是大集群方案,适合有海量规模数据的巨大企业。实际上,流行的大数据技术通常也源自这类头部互联网企业。很多场景下,数据虽然也很多,但小集群甚至无集群就足够处理,远没多到这些巨大企业的规模,也没有那么多的硬件设备和维护人员。这种情况下,就需要轻量级的大数据技术了。

二、SPL国产数据库来了!

轻量级的大数据技术不多,集算器SPL是其中的佼佼者。SPL是开源的大数据JAVA计算库,不仅代码简洁,架构轻便,易于集成,而且提供了高性能存储格式,支持单机并行计算和多机集群计算,可以充分发挥小集群的硬件性能。

2.1 架构轻便

SPL架构轻便,没有复杂的计算框架,也不依赖外部环境,不需要集群时,只要嵌入SPL的jar包就能直接进行计算,不需要启动服务器。SPL的集群计算也没有沉重的中心体系,只要随便找来几台节点机启动SPL服务,可以是配置不同或操作系统不同的PC/Linux/服务器/工作站/笔记本,然后在任意的机器上执行很简单的集群运算代码即可:

A

1

=[“192.168.1.11:8281”,“192.168.1.12:8281”,“192.168.1.13:8281”,“192.168.1.14:8281”]

2

=file(“Orders.ctx”:[1,2,3,4],A1)

3

=A2.open().cursor@m(Client, Amount,

4

=A3.groups(year(OrderDate),Client;sum(Amount))

这段代码即可以完成集群分组汇总,任务拆分汇总的压力远小于计算节点,可以在任意节点\集成环境上执行。

2.2 轻便的JDBC接口

SPL提供了轻便的JDBC接口,方便被JAVA集成。比如将上面的算法存为SPL脚本文件,在JAVA中以存储过程的形式引用脚本文件名:



Class.forName("com.esproc.jdbc.InternalDriver");
Connection conn =DriverManager.getConnection("jdbc:esproc:local://");
CallableStatement statement = conn.prepareCall("{call groupQuery(?, ?)}");
statement.setObject(1, "2021-01-01");
statement.setObject(2, "2021-12-31");
statement.execute();
...

在大数据计算方面,SPL也有很多高性能的存储机制和算法支持,比大多数使用SQL的大数据平台的性能表现要好很多,需要Hadoop/Spark集群才能完成的运算在SPL中常常用单机就解决了。

2.3 高性能存储格式

SPL提供了名为组表的高性能存储格式。组表经过精心设计,信息存储密度和计算性能高于普通格式;组表默认支持压缩,擅长存储大数据,尤其适合字段值有重复的情况;除了行存,组表也支持列存,适合对宽表的少数字段进行计算的情况,可以大幅提升压缩比和计算性能:

A

1

=file(“Orders.ctx”)

2

=A1.open().cursor(Client,Amount, OrderDate; OrderDate>=arg1 && OrderDate

3

=A2.groups(year(OrderDate),Client;sum(Amount))

2.4 并行计算

SPL组表支持并行计算,只要在cursor函数后面简单添加选项@m,这样可以充分利用多核CPU的性能优势:

A

1

=file(“Orders.ctx”)

2

=A1.open().cursor@m(Client,Amount, OrderDate; OrderDate>=arg1 && OrderDate

3

=A2.groups(year(OrderDate),Client;sum(Amount))

2.5 游标遍历复

大数据计算中的遍历很耗时,SPL支持游标遍历复用,只须对数据遍历一次,就可以计算出多个计算目标:

A

1

=file(“Orders.ctx”).open()

2

=A1.open().cursor(Client, Amount, OrderDate)

3

=channel(A2).groups(year(OrderDate);max(Amount))

4

=A2.groups(Client;sum(Amount))

5

=A3.result()

2.6 预汇总

和许多OLAP Server类似,SPL组表支持预汇总,可预先将常见的几种汇总结果缓存起来,正式计算时根据实际情况直接输出缓存结果,或对缓存结果进行二次计算,从而提升计算性能。比如下面代码即可利用预汇总的数据进行高速计算:

A

1

=file(“fact.ctx”).open()

2

=A1.open().cgroups(dim1,dim2;sum(fact1),sum(fact2))

2.7 关联计算

遇到较小的维表与大事实表进行关联计算的情况,可以把维表全量加载到每个节点的内存中,把大事实表以集群组表的形式存储在多个节点上,之后用内存的维表与外存的事实表进行关联计算,从而提升计算性能:

A

1

=[“192.168.1.11:8281”,“192.168.1.12:8281”,“192.168.1.13:8281”,“192.168.1.14:8281”]

2

=file(“Orders.ctx”:[1,2,3,4],A1)

3

=A2.open().cursor@m(SellerId, Amount)

4

=file(“Employees.ctx”,A2).open().memory()

5

=A2.join(SellerId,A4,Name,Dept)

6

=A5.groups(dept;sum(Amount))

2.8 大主子表关联计算

遇到大主子表关联计算的情况,可以把主表和子表各自以集群组表的形式存储于多个节点,并按关联字段有序存放,计算时就可以使用有序归并的方式进行关联计算,从而提升计算性能:

A

B

1

=[“192.168.1.11:8281”,“192.168.1.12:8281”,“192.168.1.13:8281”,“192.168.1.14:8281”]

2

=file(“orders.ctx”:[1,2,3,4],A1)

=file(“orderdetail.ctx”,A2)

3

=A2.open().cursor@m()

=B2.open().cursor(;;A3)

4

=joinx(A3:m,ID;B3:c,ID)

5

=A4.groups(m.Client;sum(c.Amount))

在大数据计算方面,SPL还支持大维表集群计算,可自定义任务大小,指定并行数量,允许设计高效的执行路径,支持外存容错和内存容错。此外,SPL还支持多种文件、RDB、NoSQL、大数据数据源,并支持数据源之间的混合计算,经常可以省去大数据计算时麻烦耗时的格式转换和出库入库过程。

三、SPL资料

对该国产数据库感兴趣的,可以看我写的两篇简单入门:
​像学Excel一样国产SPL数据库,零基础入门(1)​​像学Excel一样国产SPL数据库,零基础入门(2)

根据大家放映和需求,我再看是否继续写点入门教程。


标签:技术,192.168,A1,Amount,SPL,计算,8281,数据,轻量级
From: https://blog.51cto.com/u_15677788/5915667

相关文章

  • vue3 使用watch 监听多个数据
    //监听时间选择watch([internalSubmTimer,internalTimer,externalSubmTimer,externaTimer,callbackTimer,],(newValue,oldValue)=......
  • 技术分享| anyRTC音视频与微信小程序互通实践
    随着网络架构的变迁、媒体技术发展、音视频场景迭代,基于流媒体的技术也是推陈出新。WebRTC渐渐的成为了音视频互动场景的主流,而微信在6.5.21版本通过小程序开放了实时音视频......
  • 技术管理思维导图V0.0.1
    ......
  • 技术分享| anyRTC音视频与微信小程序互通实践
    随着网络架构的变迁、媒体技术发展、音视频场景迭代,基于流媒体的技术也是推陈出新。WebRTC渐渐的成为了音视频互动场景的主流,而微信在6.5.21版本通过小程序开放了实时音视......
  • 034-MemoryStream内存数据读写
    位与字节计算机中最小的单位时“位”,用bit表示,数据是用二进制来表示。但是bit过小,因此用字节来作为存储单位,用“Byte”表示,其中8位组成一个字节。所以一个字节表示的数的......
  • 【数据库数据恢复】MongoDB数据库无法启动服务的数据恢复案例
    关于MongoDB数据库:MongoDB数据库存储方式是将文档存储在集合之中,而不是像Oracle、MySQL一样的关系型数据库。MongoDB数据库是开源数据库,也提供具有附加功能的商业版本。M......
  • 每日一题-数据结构
    #include<bits/stdc++.h>usingnamespacestd;unordered_map<char,int>pr={{'*',2},{'/',2},{'+',1},{'-',1}};stack<int>num;stack<char>op;void......
  • 用户密码在后台数据库中加密存储方式
    总的来讲,目前公认比较安全的存储密码方式是PBKDF2,BCrypt或SCrypt算法产生的密码。历史上密码加密存储经历了如下几个阶段:单向hash(MD5)做单向的hash加密,以MD5和sha......
  • Android实验十——使用SQLite数据库存储数据
    一、实验要求和目的掌握SQLite数据库的操作方法;掌握SQLiteOpenHelper类的使用。掌握Lsitview的使用。二、实验环境部署有AndroidStudio和AndroidSDK的主机;建议......
  • sqlserver恢复数据
    若出事故的你希望能通过本文来弥补之前的错误。那么在开始阅读本文之前请先确认误操作库之前是否有一次完整数据库备份,若没有请不要再往下看了本文全程的操作仅需10分钟左......