Amo Chen

零經驗也可的 PySpark 教學 - UDF (User Defined Function)

Spark SQL 提供許多好用的函式(functions),例如 concat() , count() , date_format() 等等,但這些內建函式不一定能夠滿足一切的需求,所以有時候需要做一些擴充以達到目的,此種讓使用者能夠進行擴充的功能就被稱為 UDF (User Defined Function), RDBMS 諸如 MySQL 與 PostgreSQL 等也都支援 UDF, 詳見:

  1. MySQL - Adding a Loadable Function
  2. PostgreSQL - User-Defined Functions

Spark 也同樣支援 UDF, 讓使用者能夠擴充函式。

Posted on  Dec 28, 2022  in  Python 模組/套件推薦 , Python 程式設計 - 高階  by  Amo Chen  ‐ 4 min read

Git 版本控制教學 - submodule

Git 可以做到 repository 中嵌入其他 git repositories, 相當於版本控制原本的 repository 之外,也把內嵌的 repositories 也納入版本控制的範圍,這功能被稱為 submodule

不過 submodule 並不是將內嵌 repository 的所有檔案都做額外的版本控制,而是類似於做一個指標(pointer),將 submodule 的版本指向內嵌的 repository 的某 1 個 commit id 。

Posted on  Dec 26, 2022  in  Git 版本控制  by  Amo Chen  ‐ 4 min read

如何使用 macOS 內建的 VNC client

有時工作上會需要使用 VNC(Virtual Network Computing) 連線到遠端的伺服器桌面查看畫面,這時候不免要安裝 TeamViewer , TightVNC , VNC Viewer 等工具進行連線。

不過 macOS 其實有內建 VNC client 可供使用,如果工作上只是需要一個簡便的 VNC client 的話,可以直接用 macOS 內建的 VNC client 。

Posted on  Dec 25, 2022  in  macOS  by  Amo Chen  ‐ 1 min read

用 lsof 指令尋找佔用通訊埠的 Process

最近在開發 Next.js 相關的應用程式,無腦寫了無窮迴圈造成 dev server 關不掉,導致重啟 dev server 時會顯示以下警告訊息,該訊息顯示通訊埠(port) 3000 正在被其他 process 佔用:

warn  - Port 3000 is in use, trying 3001 instead.

本文紀錄如何找到佔用 port 的 Process Id 並且停止其運作。

Posted on  Dec 19, 2022  in  Unix-like 命令列教學  by  Amo Chen  ‐ 2 min read

你知道 Vim 也能加密文字檔(text file)嗎?

Vim is able to write files encrypted, and read them back. The encrypted text cannot be read without the right key.

Vim 作為世界知名的編輯器,實在多才多藝,就連加密都有支援,這麼方便的功能,不免引起我的注意,因此特別花了一些時間查看如何透過 Vim 加密檔案以及用 Vim 加密檔案有什麼限制。

Posted on  Dec 18, 2022  in  Vim  by  Amo Chen  ‐ 3 min read

零經驗也可的 PySpark 教學 - DataFrame part 1

上一篇 零經驗也可的 PySpark 教學 - 初體驗 ,我們透過 Docker 輕易地體驗到 PySpark 的功能,利用 PySpark 將 CSV 資料載入 DataFrame ,再將 DataFrame 轉成 temporary view 後,我們就能夠使用 SQL 對資料進行操作,過程相當輕鬆寫意。

不過 DataFrame 提供相當多的 API, 讓開發者能夠像操作 ORM(Object Relational Mapping) 一樣進行開發,可說是 PySpark 學習過程必須學會的一環,本篇將介紹更多關於 DataFrame 的相關操作,包含 SELECT, FILTER, JOIN, UNION 等常用的功能。

Last updated on  Dec 16, 2022  in  Python 模組/套件推薦 , Python 程式設計 - 高階  by  Amo Chen  ‐ 6 min read

Git 版本控制教學 - 用範例學 rebase

常言道「不會 rebase, 等於沒學過 Git」,由此可見 rebase在 Git 內有多重要。

在開始本文之前,請大家牢記千萬不要對已經 push 到遠端儲存庫(remote repository) 而且已經有人正在使用的提交進行 rebase ,這是很危險的!詳情請見 The Perils of Rebasing

Do not rebase commits that exist outside your repository and that people may have based work on.

改變歷史是很危險的!請牢記在心!

接下來,本文會說明什麼是 rebase,並且介紹 rebase 的基本用法。

Posted on  Nov 1, 2022  in  Git 版本控制  by  Amo Chen  ‐ 10 min read