java计算包 · 集算器敏捷计算-九游会登陆

java程序中的数据计算

由于各种各样原因,我们经常需要在java程序中进行数据计算处理
系统设计要求,
业务逻辑与数据存储分离
数据分散在
不同的数据源中
计算逻辑复杂,
sql实现困难

在java中实现数据计算的痛点

代码繁琐冗长
难以实现复杂算法
耦合性高
维护困难

一段实现简单分组统计的java代码

这么长的代码仅仅实现了单个字段分组单个字段汇总的功能

解决办法:java专业计算包 - 集算器

说明:spl是esproc采用的脚本语言,dfx为脚本文件,相当于外置存储过程,java通过jdbc接口传入spl语句实现结构化计算或执行脚本。

专业数据计算语言spl

  • 离散化与集合性的结合
  • 300多个结构化计算函数
  • 特色网格式代码层次清晰
  • 内存、外存游标、集群运算
  • 循环,分支适应过程式计算
  • 分步计算与完善的调试功能

丰富数据接口

  • rdb:oracle,db2,ms sql,mysql,pg,….
  • mongodb,redis,…
  • hadoop:hdfs,hive,hbase
  • 内存、txt/csv,json/xml,excel
  • http、ali-ots
  • 文件sql接口

专业jar包

  • 标准jar包,易于集成
  • 可多线程并行计算
  • 完善的异常处理

spl实现分组

常规分组

汇总每个人的值班天数
a
1 =file("/users/test/duty.xlsx").importxls@tx()
2 =a1.groups(name;count(name):count)

这类基本运算还可以直接用sql写:

select name,count(name) from user/test/duty.xlsx group by name

每组top n

获取每个月、每个人、头三天的加班记录
a
1 =file("/users/test/duty.xlsx").importxls@tx()
2 =a1.groups(month(workday):mon,name;~.top(3):top3)

对位分组

按顺序分别列出使用 chinese、english、french 作为官方语言的国家数量
a
1 =connect("mysql")
2 =a1.query@x("select * from world.countrylanguage where isofficial='t'")
3 [chinese,english,french]
4 =a2.align@a(a3,language)
5 =a4.new(a3(#):name,~.len():cnt)

运算类库

专门针对结构化数据表设计

降低java耦合度

java硬编码

编译执行

硬编码算法必须和主应用一起编译打包

模块化困难

硬编码算法和主应用存在类依赖,难以隔离,耦合度高

编译执行

硬编码算法修改后会导致整个应用重新编译部署重启,很难做到热切换

集算器

解释执行

集算器算法无需事先编译

模块化简单

集算器脚本文件与主应用无依赖关系,可外置于java,可单独维护

容易热切换

无需编译无需重启,可热切换

多样性数据源支持

java计算能力难以胜任多样性数据源

集算器内置接口便捷访问

  • 商用 rdbms:oracle、ms sql server、db2、informix
  • 开源 rdbms:mysql、postgresql
  • 开源 nosql:mongodb、redis、cassandra、elasticsearch
  • hadoop家族:hdfs、hive、hbase
  • 应用软件:sap ecc、bw
  • 文件:excel、json、xml、txt
  • 其他:http restful、web services、olap4j 、...

跨库计算支持

标准化调用接口

java代码

...
connection con = null;
class.forname(com.esproc.jdbc.internaldriver");
con= drivermanager.getconnection("jdbc:esproc:local://");
//调用存储过程,其中countname是dfx的文件名
st =(com. esproc.jdbc.internalcstatement)con.preparecall("call countname()");
//执行存储过程
st.execute();
//获取结果集
resultset rs = st.getresultset();
...		
热部署外置算法有效降低耦合性

资源链接


网站地图