给大家引荐下我的开源项目【们】

前言

从开始工作,我一直会问自己这么两个问题:

  1. 我有足够多的工具提升自己效率么?

  2. 我有足够好的平台去提升团队效率么?

效率在我看来是至关重要的。关于我对效率的理解,还可以看看我这篇文章 【抖音短文】痛点不能驱动一切,效率驱动才是

如果要让自己有效率,取决于两点:

  1. 要有足够多的工具覆盖自己工作的方方面面

  2. 自己用的笔记本要有足够多的脚本实现自动化

先简单说说第二点,举个例子,因为我用的是MacBook,所以我会把我常见的工作都转化为脚本或者命令,而且这些脚本和命令只能在我的Mac笔记本上工作。他们存在的意义就是为了让我高效的使用我当前这台笔记本。

关于第一点,其实就是我们今天即将登场的主角们了。我会按我职业生涯来依次给他们一个出场顺序。大体上,我08-11年做Web, 11-13年做搜索,13年以后做进入大数据这个行当。大概是这么个时间点,不一定准确。

ServiceFramework

我职业生涯第一阶段是做Web开发,并且主力语言是Java,所以我希望写Web能更高效些,于是就有了ServiceFramework。这个项目首页的第一句话就是:

ServcieFramework 定位在 移动互联网后端 领域,强调开发的高效性,其开发效率可以比肩Rails.

可以看到,SF是受到Rails的影响。但是受限于Java这个语言自身动态性的不足,所以虽然模仿Rails的Java框架很多,但终究似乎都难以火起来。现在,Web上,Java还是Spring(Boot)的天下。

ServcieFramework其实有非常多的创新,在ORM上,通过字节码修改技术,它成功的Java上实现了富血模型,并且摒弃了比如Hibernate的XML以及复杂的Annotation配置,极致简化后的结果就是你可以定义一个空的模型类:

public class Tag extends Model {    

然后直接做各种各种查询(以及保存)了,比如:

image.gif

模型字段校验也创新的采用了代码描述:

image

或者静态块描述:

image

Controller也有自己独特的设计:

image

ServiceFramework我其实不鼓励其他人使用,但我自己却一直在用,主要原因是我个人使用它效率非常高,而且可以随时修改发版。

web-platform

当然,SF的设计离现在已经快小十年了。今年(2020)因为疫情在家里多呆了写时间,基于ServiceFramework,我开发了一套纯插件的Web体系,并且配套了相应的命令行工具。如果感兴趣,大家可以看看这篇文章开发你的第一个web-platform应用。 目前我已经基于web-platform开发了非常多的有意思的项目,比如MLSQL的插件仓库,Python代码执行器等等,大家可以在我的github主页看到ar_开头的项目名都是和他相关的。这个项目的特点是,插件可以独立运行,也可以基于一个runtime运行,相比JVM会更高一层。插件之间可以通过lib依赖,也可以通过接口依赖,并且我们提供了sf-cli命令,帮助大家去构建项目,非常方便和高效。我新的web项目基本都基于web-platform去完成的。web-platform进一步简化了基于http协议的web开发,相比SF,你基本上你已经touch不到http概念了。我想等他成熟点,可以试试推广看下。

MLSQL

因为我做大数据的时间比较久,所以相应的项目也就多一些。第一个当然是MLSQL,我给他的定义是The Programming Language Designed For Big Data and AI。设计他的原因是我比较厌烦了来一个业务,就要开发一个Spark程序,然后还要找台跳板机部署,运行,明明五分钟就可以搞定的事情,来来回回要一个程序员一天。我希望团队通过简单的MLSQL脚本就能完成批,流,adhoc查询以及机器学习相关的任务,而且所见即所得,写完点击运行直接看结果,速度要快。关于这个项目,我写的文章以及视频等等已经非常多了。感兴趣的可以进一步深入看看。

下面是一段MLSQL代码的例子:

image

PyJava

PyJava是我为了融合大数据和AI做的一个项目,主要是基于Arrow实现Java 和Python 数据互通。该项目可以应用于普通的Java程序也可以应用于Spark程序上,目前他已经被应用于我前面的MLSQL项目中。多语言融合的核心其实是数据交互,如何高效的将数据从一个语言生态传输到另外一个语言生态,这包括进程内,进程间两种情况。关于多生态融合方面的内容,不妨参看我这篇文章 [让我们再探讨是可以【移动数据】而不是【移动计算】了。未来多生态融合会成为主流。所以我也很看好我这个PyJava项目。

下面是一段示例代码:

image

delta-plus

delta-plus 是我基于Delta数据湖项目做的一个增强版。他可以在Scala或者MLSQL语言中使用。

目前原生delta 我个人认为还没达到开箱即用,不做任何调优或修改 就能很好满足很多业务场景,或多或少还是需要你了解下里面的原理的,这也是delta-plus存在的理由。

delta-plus解决了如下几个痛点:

  1. 无论流批upsert,都可以保持文件数稳定。原生delta upsert会导致大量小文件问题。

  2. 单独支持Partial Merge

  3. 支持append only表的compaction操作

  4. 支持和spark-binlog 配合 ,做MySQL/HBase实时同步数据到Delta中

我也写了一个系列文章数据湖delta,里面涉及到了我对delta-plus的一些设计缘由,当然也可以很好的帮你去了解Delta.

spark-binlog

spark-binlog 我google了下,应该是唯一实现了对接mysql/hbase增量数据的spark数据源。spark-binlog支持读取MySQL binlog日志,HBase WAL日志来获取数据的变更。配合delta-plus,可以很容易实现数据实时同步到数据湖。

下面是一段spark的示例使用代码:

image

spark-adhoc-kafka

spark-adhoc-kafka 允许你直接基于Kafka作为数据源做数据分析。支持时间范围下推,offset区间下推,以及并行度控制,从而让分析速度更快。有的时候你想看看Kafka数据到底啥情况,这个就是不错的分析工具。

下面是Spark示例代码:

image

这个是MLSQL的示例使用代码:

image

sql-booster

sql-booster 目标是实现物化视图功能,顺带做了一波SQL血缘关系的相关的功能。

物化视图是啥意思呢?假设你有基础表A,B,C,然后你还有一种基于A,B,C聚合得到的新表D. 当你写一条只包含A,B,C三张表的SQL语句时,系统会自动尝试能够将改写成包含D的SQL语句。这样就可以避免大量的计算。

比如你基于emps,depts表创建了一个新表:

image

之后你使用sql-booster 对某条SQL进行改写:

image

改写后的结果为

SELECT a.`empid` 

我们看到,改写后的语句里只有emps_mv了,消除掉了join计算。

另外sql-booster 还支持将logicalplan转化为SQL。这个在特定场景也很有用。

还有其他一些有用的库

比如common-utils是我写的一套工具库,有点类似guava,顺带我把大部分guava代码都修改了一份放到了common-utils里,避免我的项目和依赖的项目的guava包发生冲突。ServiceframeworkDispatcher 就是一个只有不到300行代码的一个策略开发框架。大家可以到我的allwefantasy主页多看看。

=========
欢迎大家关注我公众号 【祝威廉】

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268