用 Python 的 DuckDB 下 SQL 指令翻 Parquet 的資料

在「Querying Parquet using DuckDB」這邊看到 DuckDB 這個東西,裡面引用的文章是「Querying Parquet with Precision using DuckDB」,可以直接對 Parquet 格式的資料下 SQL 找資料。

先前好像有看到 DuckDB 但沒有太注意,剛剛再次看到,然後玩了一下還蠻有趣的。DuckDB 支援蠻多程式語言與資料格式,不過這邊文章拿 Python 與 Parquet 玩還蠻有趣的...

先把 Parquet 的範例資料抓下來,然後透過 pip 裝 duckdb:

cd /tmp; wget https://github.com/cwida/duckdb-data/releases/download/v1.0/taxi_2019_04.parquet; pip install -U duckdb

然後進到 Python 3 的互動界面:

>>> import duckdb
>>> print(duckdb.query("SELECT COUNT(*) FROM 'taxi_2019_04.parquet' WHERE pickup_at BETWEEN '2019-04-15' AND '2019-04-20'").fetchall())
[(1276565,)]

然後在範例裡面,檔名的部份還可以用 *,看了一下說明,底層是 glob 類的用法:

DuckDB supports the globbing syntax, which allows it to query all three files simultaneously.

文章裡有提到速度比 Pandas 快很多,不過我覺得這好像不太能這樣比,會拿 Pandas 出來的時候常常是其他用法,但至少看起來速度是個 DuckDB 在意的點。

不過反而馬上想到的是,之後處理 CSV 之類的檔案應該也會試看看 DuckDB...

用繪本 (?!!!) 解釋 Apache Kafka

Hacker News 上看到「I wrote a children's book / illustrated guide to Apache Kafka (gentlydownthe.stream)」這篇,用繪本的方式解釋 Apache Kafka 的運作方式:「Gently Down the Stream」,非常值得一看。

以 Hacker News 上 upvote 的數量來看,應該也會上明天的 Hacker News Daily

這繪本還帶有一些動畫效果,而且把需要提到的東西都有帶出來 (像是 Kafka Connector 都有提到),不過雖然作者目標群是小朋友,看起來大人還比較興奮?

Grafana 家的軟體改 AGPLv3

Grafana 家的軟體宣佈從本來的 Apache License 2.0 轉換成 AGPLv3:「Grafana, Loki, and Tempo will be relicensed to AGPLv3」。

相關的討論可以在 Hacker News 上的「Grafana, Loki, and Tempo will be relicensed to AGPLv3 (grafana.com)」看到。

Going forward, we will be relicensing our core open source projects (Grafana, Grafana Loki, and Grafana Tempo) from the Apache License 2.0 to the Affero General Public License (AGPL) v3. Plugins, agents, and certain libraries will remain Apache-licensed. You can find information in GitHub about what is being relicensed for Grafana, Loki, and Tempo.

這應該是對 Amazon Managed Service for Grafana 的反擊。

看起來 Grafana 7.5.3、Grafana Loki 2.2.1 以及 Grafana Tempo 0.6.0 是最後使用 Apache License 2.0 授權的版本,不確定會不會有人 fork...

Elasticsearch 與 Kibana 也變成非 Open Source 軟體

Nuzzel 上看到的消息,ElasticsearchKibana 也變成非 Open Source 軟體了:「Elasticsearch and Kibana are now business risks」,官方的公告在「Upcoming licensing changes to Elasticsearch and Kibana」這邊。

新版將會採用 SSPL (由 MongoDB 設計出來的授權) 與 Elastic License (Elastic 的商用授權) 的雙重授權,不過兩個授權都不是 Open Source 授權。

應該是跟 Amazon Elasticsearch Service 這種搞法加減有些關係?不知道 AWS 這邊後續會怎麼弄...

另外如果不選擇 Elasticsearch 的話,目前好像只有 Solr 算是堪用?不過很久沒回去看 Solr,不知道現在軟體發展到什麼程度...

AWS 推出 Amazon Managed Workflow,把 Airflow 包成服務

AWS 推出了 Amazon Managed Workflow,把 Apache Airflow 包成服務:「Introducing Amazon Managed Workflows for Apache Airflow (MWAA)」。

看起來就是預設提供 HA 架構,然後把設定放到 web 上管理,以及整了 AWS 自家的服務。價錢上看起來不便宜,不過看起來定位主要還是方便用...

C++ 版本的 Kafka

Hacker News 首頁上看到的東西,看起來是 C++ 版本的 Apache Kafka 替代品 Redpanda,要注意的是這不是 open source license 軟體:「Redpanda – A Kafka-compatible streaming platform for mission-critical workloads (vectorized.io)」。

目前網站上可以看到,最主要的特點是不需要 Apache ZooKeeper,不過這點在 Kafka 這邊也正在進行了 (之前在「Kafka 拔掉 ZooKeeper 的計畫」這篇有提到),雖然進度有點慢...

另外目前完全沒有 benchmark 資料,只有宣稱 10x 更快,官方在 Hacker News 上的回應是說十二月會有公開的測試報告,這樣我會把 10x 當廣告詞看了,應該會更快,但大概是某種特殊情境下才會達到...

Kafka 拔掉 ZooKeeper 的計畫

目前 Kafka cluster 還是會需要透過 ZooKeeper 處理不少資料,但眾所皆知的,ZooKeeper 實在是不好維護,所以 Kafka 官方從好幾年前就一直在想辦法移除對 ZooKeeper 的相依性。

這篇算是其中一塊:「Kafka Needs No Keeper」。

真的自己架過 Kafka cluster 就會知道其中的 ZooKeeper 很不好維護,尤其是 Apache 官方版本的軟體與文件常常脫勾,設定起來就很痛苦。所以一般都會用 Confluent 出的包裝,裡面的 ZooKeeper 軟體與 Confluent 自己寫的文件至少都被測過,不太會遇到官方文件與軟體之間搭不上的問題。

另外一個常見的痛點是,因為 Kafka 推動拔掉 ZooKeeper 的計畫推很久了 (好幾年了),但進展不快,所以有時候會發現在 command line 下,有些指令會把 API endpoint 指到 ZooKeeper 伺服器上,但有些指令卻又指到 Kafka broker 上,這點一直在邏輯上困擾很久,直到看到官方的拔除計畫 (但又不快) 才理解為什麼這麼不一致...

給需要的人參考,當初在架設 Kafka cluster 時寫下來的筆記:「Confluent」。

JetBrains 釋出 Monospace 字型

JetBrains 釋出了一套 Monospace 字型 Jetbrains Mono 提供給大家使用:「JetBrains Mono: A free and open source typeface for developers」。

使用 Apache 2.0 License 授權,其他比較常見到的是 SIL Open Font License

JetBrains Mono typeface is available under the Apache 2.0 license and can be used free of charge, for both commercial and non-commercial purposes. You do not need to give credit to JetBrains, although we will appreciate it very much if you do.

雖然是個不常在字型上見到的授權,但 Apache 2.0 License 在軟體這塊蠻常見的,大家的熟悉度也還 ok,應該是沒有什麼大問題... 要注意 Apache 2.0 License 與 GPLv2 是不相容的就好,不能包在一起丟出來。

先換起來用看看,之後再看看有什麼想法...

Cassandra 也被 AWS 包成服務了

也是剛剛發表的服務 (所以在 Twitter 上看到),把 Apache Cassandra 包成服務,叫做 Amazon Managed Apache Cassandra Service:「New – Amazon Managed Apache Cassandra Service (MCS)」。

而且是個 serverless 服務,直接用服務,不需要管理機器:

Amazon MCS is serverless, so you pay for only the resources you use and the service automatically scales tables up and down in response to application traffic.

從計費的方式也可以看出來這點,是對 Write request units、Read request units 與 Storage 收費,沒有看到機器的費用。

不過稍微算了一下不算便宜,如果沒有用到 Cassandra 的特性的話,比 DynamoDB 貴一些?

目前是 open preview 狀態,是個可以用但是不掛保證的意思:

Amazon MCS is available today in open preview in US East (N. Virginia), US East (Ohio), Europe (Stockholm), Asia Pacific (Singapore), Asia Pacific (Tokyo).

算是多個選擇可以玩...