经过几个月的折腾,MLSQL 1.4.0版终于发布了。然后呢,我们也在这个版本正式对MLSQL做了新的定位,从原来的 "Unify BigData and Machine Learning" 转成了 "The Programming Language Designed For Big Data and AI"。 更多介绍可以参看 A Programming Language Designed For Big Data and AI
如同 Julia语言 最早的设计是为了解决高性能编程,现在已经重新定位为科学计算。MLSQL最早也是为了希望解决大数据和机器学习存在交互难的问题而设计的,但是现在我们觉得把MLSQL说成是一个面向大数据和AI的语言更合适些。
关于MLSQL的运行时
通常一个语言的运行时环境都是单机的,然后基于这个语言开发分布式的应用,类似Java/Scala和Spark的关系。当然,很多语言是没有运行时环境,比如Rust,Julia就是直接使用LLVM为多个平台直接编译成Native Code,不过无论如何,它们都是基于单机的。MLSQL的运行时环境则天然是分布式的,并且可以运行在多种分布式资源调度系统中,比如Mesos,K8s, Yarn等等,你可以轻易扩展到成千上万台机器上。当然,单机是分布式的一种特殊情况。
之所以一开始就是按分布式设计,这主要是由大数据和机器学习对海量数据,以及极大的算力要求决定的。
关于MLSQL的语法
从语法角度而言,MLSQL的目标是让所有人都可以做数据分析和机器学习,这就意味着他要足够的简单。MLSQL 充分吸收了命令行(最简单了),SQL(申明式操作数据的语言), Python(表达能力超强但很适合做探索的语言),将他们三者融合为一体。不过大家不要担心MLSQL会是一个三不像的语言,因为MLSQL是以SQL为主,嵌入命令行和Python的支持。因为我们是以SQL为主体的,自然也能利用SQL的扩展点,比如使用Java/Scala等传统工业语言实现UDF,UDTF,UDAF等。
说了半天,让我们直观感受下:
这里,我们用SQL语句造了一条数据,最后那条指令是保证数据只会被划分成一份(记得MLSQL运行时环境天然是分布式的么?)
现在呢,我想用Python语法对数据做处理,毕竟我们喜欢用numpy,pandas等工具,我们先设置两个python相关的变量:
第一个表示我要用分布式环境里的那个python环境,第二个表示我处理完的python数据格式是什么样子的。
这段MLSQL代码特别直观,表示我要用python对table2做处理,具体的python代码被''' '''括起来了。最后处理完的结果,名字叫mlsql_temp_table2。
现在让我们看看这个表的结果是啥样的,我们直接用select语句搞定:
结果是一张图:
是不是很简单?
整个MLSQL的语法其实只包含了8个语法格式。
大家可以看看 MLSQL语法指南,非常简单,整个学习过程大概十几分钟到几个小时不等。
MLSQL Stack
MLSQL Stack 是MLSQL的一个实现版,给用户直接提供了控制台,多运行时环境管理等诸多功能, 并且内置了我们在真实的大数据和AI工作中,涉及到方方面面,比如binlog数据同步,可更新的数据湖,多租户,流支持,丰富的特征工程库,算法库。 大家可以看看我们的官方文档
MLSQL完全开源和免费
大家可以在
访问到对应的github项目。
MLSQL站在巨人的肩膀上
MLSQL的核心引擎是建立在Apache Spark之上的。