この記事の内容
この記事では、Twitter社とCloudera社(米国のソフトウェア会社)で共同開発されたオープンソースの列指向(カラムナ)のデータストレージ形式である、「Apache Parquet」のファイルをプログラムで読み込む方法を紹介します。
プログラムはC#(.NET Core)を使用します。プログラムは単純に、スキーマ情報および行データを表示するサンプルを紹介します。
サンプルは以下のGitHubにて公開しています。
GitHub - remix-yh/ParquetSampleApp
Contribute to remix-yh/ParquetSampleApp development by creating an account on GitHub.
プログラム
Parquetファイルの読み込みは、Parquet.Netを使用します。Parquet.NetはNugetより取得できます。
プログラムは以下の通りです。
using Parquet; using Parquet.Data; using Parquet.Data.Rows; using System; using System.Linq; namespace ParquetSampleApp { class Program { static void Main(string[] args) { // parquetファイル読込 Table table = ParquetReader.ReadTableFromFile("./data/sample.parquet"); //スキーマ情報の表示 ShowSchema(table.Schema); Console.WriteLine(); //行データを表示 ShowRows(table); } static void ShowSchema(Schema schema) { Console.WriteLine("---------- Schema ----------"); foreach (var field in schema.GetDataFields()) { Console.WriteLine($"Name={field.Name}, SchemaType={field.DataType}"); } } static void ShowRows(Table table) { Console.WriteLine("---------- Rows ----------"); foreach (var row in table) { string values = String.Join(",", row.Values.Select(v => { if(v is byte[]) { return BitConverter.ToString((byte[])v); } return v.ToString(); }).ToArray()); Console.WriteLine(values); } } } }
出力結果
---------- Schema ---------- Name=id, SchemaType=Int32 Name=bool_col, SchemaType=Boolean Name=tinyint_col, SchemaType=Int32 Name=smallint_col, SchemaType=Int32 Name=int_col, SchemaType=Int32 Name=bigint_col, SchemaType=Int64 Name=float_col, SchemaType=Float Name=double_col, SchemaType=Double Name=date_string_col, SchemaType=ByteArray Name=string_col, SchemaType=ByteArray Name=timestamp_col, SchemaType=DateTimeOffset ---------- Rows ---------- 0,True,0,0,0,0,0,0,30-31-2F-30-31-2F-30-39,30,2009/01/01 0:00:00 +00:00 1,False,1,1,1,10,1.1,10.1,30-31-2F-30-31-2F-30-39,31,2009/01/01 0:01:00 +00:00
コメント