2023 12 Open Source weekly report

不出意外这是 2023 年第一份周报,一直拖着不写倒不是因为没什么可写的,反而是因为最近这几个月接收的信息量太大,一时间没有办法吃透、理解,自然就无法做到有效输出。除了常规的工作以外,这段时间开始接触 ELT 相关的东西,比如 Airbyte、dbt,CDC 领域中的 TapData、Flink CDC ,完善 databend 在 BI 类工具的生态….比如 superset, redash, metadata 等,信息量可以说是爆炸式增长,很多东西也是一知半解的。

这周之所以想起来写是因为写了一点比较有意思的新东西,所以想记录并分享一下。

Clojure & Metabase

是的你没看错,这周一直在写 Clojure。起因是要在 Metabase 中支持 databend,metabase 是一款易用、开源、技术成熟、不断并快速迭代的 BI 工具,打开 metabase 的 Github 首页 可以看到其主要是编程语言正是 Clojure。

很多年轻的朋友可能都没听说过这门编程语言。Clojure 是一种运行在Java平台上的类 Lisp 语言,看到 Lisp 是不是一种上古的气息扑面而来。Clojure 比较成功地把函数式编程引入了 JVM,在JVM平台运行的时候,会被编译为JVM的字节码进行运算。其最大的优势就是在保持了函数式语言的主要特性的前提下,例如immutable state,Full Lisp-style macro support,persistent data structures等等,还能够非常方便的调用Java类库的API,和Java类库进行良好的整合。

Metabase 提供了一种插件系统,方便开发者以开发插件的方式,将数据源添加到 metabase 中,因为要调用 metabase driver 的 API,所以插件的编写也需要使用 Clojure 来完成。

上手 Clojure

hello clojure

Clojure 是完全的函数式编程,基本语法比较简单,大概看了半天的教程配置好开发环境就能写 hello world 了。A few days later….,支持 databend 的 metabase 插件就完成了,项目及相关代码在 metabase databend driver

插件使用

Metabase 的插件使用起来非常方便,只需要两个 jar 就能从 databend 读取并分析数据出报表了。

Download metabase.jar

Metabase是一个Java应用程序,可以通过下载JAR文件 并执行 java -jar metabase.jar来运行。Metabase 使用 JDBC Driver 连接到 Databend。

Download metabase Databend Driver

  1. 在下载 metabase.jar 的目录下创建目录 plugins

    1
    2
    3
    $ ls
    metabase.jar
    $ mkdir plugins
  1. 下载最新的 databend metabase driver: https://github.com/databendcloud/metabase-databend-driver/releases/latest 到 plugins 目录下

  2. 启动 metabase

    1
    java -jar metabase.jar

    启动过程中看到下面的日志就表示 databend 驱动被正常加载:

    1
    2
    2019-05-07 23:27:32 INFO plugins.lazy-loaded-driver :: Registering lazy loading driver :databend...
    2019-05-07 23:27:32 INFO metabase.driver :: Registered driver :databend (parents: #{:sql-jdbc}) 🚚

    访问 http://hostname:3000 即可打开 metabase 首页

Connect Metabase to Databend

  1. 填写基本信息,选择 I'll add my data later

  1. 点击Add your own data 创建 databend 数据库连接

选择 databend (databend version >=DatabendQuery v1.0.17)

填写数据库连接信息后点击保存

  1. 退出后台管理

Run a SQL query

  1. 退出后台管理后,在右上角,单击 + New 菜单,可以运行SQL查询和构建仪表盘。

  2. 举个 SQL 查询的🌰

    9ff9873e-e8ee-44da-8126-e6b4f5b9cf3d

  3. 点击左下角的可视化按钮可以构建仪表盘

Learn more

有关Metabase以及如何构建仪表板的更多信息,请访问 Metabase 文档

一些感受

写 Clojure 过程中感受最深的还是圆括号求值 (),因为 Clojure 中任何语句的一般形式需要在大括号中求值,向下面这样:

1
2
3
4
5
6
7
8
(+ 1 2) ;运算符在前
------
(ns clojure.examples.hello
(:gen-class))
(defn Example []
(println (str "Hello" "World"))
(println (+ 1 2)))
(Example)

所以当一个函数比较大而且有高阶函数的时候,数括号就会成为一种灾难😂,这个时候就不得不依赖 IDE 的提示了。

机缘巧合粗浅地了解了这门编程语言,不过目前来看使用 Clojure 作为主力开发语言的公司非常少,坊间甚至一度传闻 Clojure is dead。但是语言只是工具,即使工作中无法使用,了解这门优雅、富有表现力的语言来扩展自己的眼界,也是不错的选择。Clojure 社区也有一些有意思的项目,这里抛砖引玉,感兴趣的同学可以去了解一下。


索性在这里记录跟踪一下最近的一些跟开源相关的工作


-------------The End-------------

本文标题:2023 12 Open Source weekly report

文章作者:cloud sjhan

发布时间:2023年03月17日 - 19:03

最后更新:2023年03月18日 - 17:03

原始链接:https://cloudsjhan.github.io/2023/03/17/2023-12-Open-Source-weekly-report/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

cloud sjhan wechat
subscribe to my blog by scanning my public wechat account
坚持原创技术分享,您的支持将鼓励我继续创作!
0%
;