Parquet.Net: 將 Apache Parquet 移植到 .NET

张善友發表於2024-09-20

Parquet.Net 是一個用於讀取和寫入 Apache Parquet 檔案的純 .NET 庫,使用MIT協議開源,github倉庫:https://github.com/aloneguid/parquet-dotnet。Apache Parquet 是一種面向大資料的列式儲存格式。Parquet.Net 支援 .NET 4.5 及以上版本和 .NET Standard 1.4 及以上版本,這意味著它也隱式支援所有版本的 .NET Core。這個庫可以在所有 Windows、Linux、macOSX 版本上執行,也可以透過 Maui 在移動裝置(iOS、Android)和遊戲機等支援 .NET Standard 的平臺上執行。

image

Parquet.Net 的一個重要特點是它對 Apache Parquet 檔案的支援,這使得 .NET 平臺在大資料應用中更加完整。由於 Parquet 庫主要適用於 Java、C 和 Python,這限制了 .NET/C# 平臺在大資料領域的應用。Parquet.Net 的出現填補了這一空白,為 .NET 開發者提供了一個處理 Parquet 檔案的強大工具。可以無縫整合到 .NET 生態系統中,幫助開發者高效地處理和儲存資料。

Parquet.Net 提供了低階 API 和高階 API,允許使用者根據需要進行靈活的操作。此外,它還提供了基於行的 API,使得處理複雜的資料結構更加直觀和方便。Parquet.Net 支援動態模式,並且能夠自動將 C# 類序列化為 Parquet 檔案,無需編寫繁瑣的程式碼。Parquet.Net 被全球許多小型和大型組織使用。官方公開的 NuGet 統計資料已經表明 Azure 機器學習ML.NET 正在使用它,這兩者都很大,但也有很多其他的使用者在用。

Parquet 是一種列式儲存格式,旨在提供高效的儲存和檢索能力,廣泛應用於大資料處理框架如 Apache Spark 中。Parquet 支援高階壓縮和編碼方案,以最佳化儲存空間和提高讀取速度。截至 2024 年,Parquet.Net是世界上最快的 Parquet 庫,不僅在 .NET 執行時,而且與所有平臺相比。

Parquet.Net 提供的高階 API 具體包括以下功能:

  1. 列式儲存:Parquet 是一種列式儲存格式,這意味著資料按列儲存而不是按行儲存。這種儲存方式可以顯著提高大資料處理和分析的效率。

  2. 高效的資料讀取:透過列式儲存結構,Parquet 實現了高效的資料讀取能力,特別是在處理大規模資料集時表現尤為突出。

  3. 低階 API 使用:Parquet.Net 還提供了低階 API,這是與 Parquet 資料結構最相似且效能最高的方法。雖然這種方法不如其他高階 API 直觀,但它需要使用者對 Parquet 資料結構有一定的瞭解,並且在使用前必須定義模式(schema)

目前,Parquet.Net 的最新版本是 4.25.0,可以透過 NuGet 包管理器在 Visual Studio 中安裝。

相關文章