Python 模組/套件推薦

零經驗也可的 PySpark 教學 - 初體驗

Apache Spark 是現今處理巨量資料(large-scale data)分析、資料處理、機器學習(machine learning)的主流叢集運算框架之一,其主打簡單、快速、可擴充(scalable)、統一介面(unified) 4 大特點,更支援多種語言(Python, Java, R, SQL)可供靈活選擇運用。

Spark 採用的是 In-memory 運算技術,運算的資料存在於記憶體之中,相對於使用硬碟等儲存媒介的運算框架(例如 Apache Hadoop)而言, Spark 具有運算速度的優勢。

此外,除了提供核心運算功能的 Spark Core, Apache Spark 更在其基礎上衍生 Spark SQL, Spark Streaming, MLlib, GraphX 四大功能:

  • Spark SQL - 支援以 SQL 對資料進行操作、運算
  • Spark Streaming - 讓 Spark 能夠處理串流(streaming)形式的資料
  • MLlib - 增加機器學習(machine learning)的相關函式庫(library),讓開發者得以利用 Apache Spark 進行機器學習相關的運算
  • GraphX - 支援圖論(graph theory)相關的運算,像社群網絡(social network)相關數據分析就適合使用 GraphX 進行運算

引用自 https://databricks.com

綜觀來說,Apache Spark 是相當值得投資學習的一套運算框架。

本文將透過 Docker 以及 PySpark 為初學者提供接觸 Apache Spark 的一條捷徑。

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

分分鐘教你學會使用 Python AIOHTTP

Python 知名套件 requests 一直是每位 Python 應用開發者在開發 HTTP client 的首選,不過該套件原生並不支援 asyncio, 無法受益於 asyncio 在 I/O 方面高效率的優點,因此如要增加使用 requests 的效率,通常會搭配 multiprocessingthreading 模組,透過平行(concurrent)處理提高同一時間能夠執行 HTTP 要求的數量。

所幸我們仍有 AIOHTTP 可以使用,該套件不僅提供與 requests 套件相同的功能,更原生支援 asyncio, 因此可以在不使用 multiprocessingthreading 模組的情況下,就能夠達到相當高的執行效率,如果想透過 asyncio 提高 HTTP client 的效能,不妨考慮使用 AIOHTTP 吧!

本文將透過實際範例學習如何使用 AIOHTTP 實作 HTTP client, 建議需有 asyncio 的基礎再閱讀本文為佳。

Last updated on  Feb 9, 2023  in  Python 模組/套件推薦 , Python 程式設計 - 高階  by  Amo Chen  ‐ 10 min read

Python 模組/套件推薦 - itertools & more-itertools

Python 其實內建許多好用的模組,如果運用得當,不僅節省開發時間,還能讓程式碼看起來更加簡潔。

itertools 就屬於內建好用的模組之一,該模組提供不少讓我們能夠方便地處理 iterable (例如 dict, list, tuple, str 等類型的資料),譬如環型走訪、分類群組(group by)、乘積(product)等等。

如果 itertools 內建的函式還不夠的話,還可以安裝 more-itertools 。 more-itertools 提供更多額外的函式可供利用。

本篇將介紹幾種 itertools/more-itertools 中簡單易用的函式,提供除了自己動手實作之外的方法,不僅能夠節省重複開發輪子的時間,也能夠讓程式看起來更加優雅、簡潔。

Posted on  Aug 9, 2020  in  Python 程式設計 - 初階 , Python 模組/套件推薦  by  Amo Chen  ‐ 4 min read

用 pydantic 輕鬆進行設定管理(Settings management)

開發時,不免都會需要實作設定檔,藉由設定檔簡單地改變系統的行為。例如 Debug 模式的開關、資料庫相關設定等等,都通常會放在設定檔中。

而 Python 不僅提供內建模組 configparser 能夠簡單實作設定檔之外,也可以簡單利用 class 實作設定檔,例如以下 2 個檔案就是 class 形式的設定檔範例:

# settings.py
class Settings(object):
    DB_HOST = 'localhost'
    DB_PORT = 8888


settings = Settings()
# test.py
from settings import settings


print(settings.DB_HOST, settings.DB_PORT)

然而,現今開發專案也經常會使用 dotenv (例如 python-dotenv )讓設定更加方便。

除了自行開發結合 dotenv 的功能之外,其實可以選擇利用 pydantic 輕鬆地整合 class 形式的設定檔與 dotenv

Posted on  Jul 1, 2020  in  Python 模組/套件推薦 , Python 程式設計 - 高階  by  Amo Chen  ‐ 3 min read

SQLAlchemy join subqueries 範例

子查詢(subquery)是使用 SQL 查詢經常會使用的技巧之一,不過各家 ORM(Object-relational mapping) 並沒有共通的實作標準,因此 subquery 的使用方法不一定會相同,這大概是使用 ORM 所必須面對的問題。

本篇紀錄 SQLAlchemy 中如何使用 subquery 以及 subquery 的 JOIN 範例。

Posted on  Mar 11, 2020  in  Python 模組/套件推薦  by  Amo Chen  ‐ 2 min read