ArrowIPC (.arrow, .arrows, .feather, .ftr)

予備知識

    • 登録MIMEタイプ:application/vnd.apache.arrow.file, application/vnd.apache.arrow.stream
    • Arrow IPC 列データ形式
    • 大規模な列データ集合を効率的にシリアル化するために使用される.
    • 列形式でシリアル化されたデータの基本単位はレコードバッチと呼ばれる.
    • Arrow IPC ファイル形式は,固定数のレコードバッチをシリアル化するために使用され,ランダムアクセスをサポートする.
    • Arrow IPC ストリーミング形式は,任意の長さのレコードバッチのシーケンスを送信するために使用される.
    • Featherバージョン2は,ディスク上でArrow IPCファイルとして表されるファイル形式である.
    • Featherバージョン1はArrow IPCファイルとは異なるレガシーファイル形式である.
    • Apache Software Foundationによって開発された.
    • バイナリファイル形式.
    • 複数の圧縮手法をサポートする.

ImportとExport

  • Import["file.arrow"]TabularオブジェクトとしてArrowIPCファイルをインポートする.
  • Import["file.arrow",elem]は指定の要素をインポートする.
  • Import["file.arrow",{elem,subelem1,}] は子要素 subelemiをインポートする.これは部分的なデータインポートに役立つ.
  • インポート形式は,Import["file","ArrowIPC"]またはImport["file",{"ArrowIPC",elem,}].で指定できる.
  • Export["file.arrow",expr]TabularオブジェクトをArrowIPCファイル形式にエキスポートする.
  • サポートされている式 expr は以下を含む:
  • {v1,v2,}1列のデータ
    {{v11,v12,},{v21,v22,},}データの行のリスト
    arraySparseArrayQuantityArray等の配列
    datasetDatasetオブジェクトまたはTabularオブジェクト
  • 一般的な情報は,以下の関数ページを参照のこと.
  • Import, Exportファイルからインポートする,あるいはファイルへエキスポートする
    CloudImport, CloudExportクラウドオブジェクトからインポートする,あるいはクラウドオブジェクトへエキスポートする
    ImportString, ExportString文字列からインポートする,あるいは文字列へエキスポートする
    ImportByteArray, ExportByteArrayバイト配列からインポートする,あるいはバイト配列へエキスポートする

Import要素

  • 一般的なImport要素:
  • "Elements" ファイル中の有効な要素とオプションのリスト
    "Summary"ファイルの概要
    "Rules"すべての可能な要素の規則のリスト
  • データ表現要素:
  • "Data"2次元配列
    "Dataset"Datasetとしての表データ
    "Tabular"Tabularオブジェクト
  • Import はデフォルトで"Tabular"要素を使用する.
  • "Tabular"要素の部分データインポートの部分要素は, {"Tabular",rows,cols}の形式で行と列の仕様を取ることができる.ここで,rowscols は次のいずれかになる:
  • nn番目の行または列
    -n末尾からn番目
    n;;mn 番目から m番目まで
    n;;m;;sn 番目から m 番目までの要素をステップ s
    {n1,n2,}指定された行または列の ni番目
  • データ記述要素:
  • "ColumnLabels"列の名前
    "ColumnTypes"各列のデータ型の連想
    "Schema"TabularSchemaオブジェクト
  • メタデータ要素:
  • "ColumnCount"ファイルに格納された列の数
    "Dimensions"データの次元
    "RowCount"ファイルに格納された行の数
    "MetaInformation"メタデータ

オプション

  • 一般的なImportオプション:
  • IncludeMetaInformationAllインポートするためのメタデータ型
    "UseMemoryMappedFile"Trueメモリマップトリーダーを使用するかどうか
  • 一般的なExportオプション:
  • "Compression"None圧縮アルゴリズム
    CompressionLevelAutomatic圧縮レベル
    "Schema"AutomaticTabularオブジェクトの構築に使用されるスキーマ
    "Streamable"FalseTrueの場合,Arrow IPC ストリーミング形式が使用される.
  • "Compression"には以下の設定がサポートされている:
  • None圧縮なし
    "LZ4Frame"LZ4フレーム圧縮
    "ZSTD"ZSTD 圧縮

例題

すべて開くすべて閉じる

  (3)

Arrow IPCファイルからTabularオブジェクトをインポートする:

ファイルの概要をインポートする:

TabularオブジェクトをArrow IPCファイルにエキスポートする:

スコープ  (3)

Import  (3)

ファイル内で使用可能なすべての要素を見る:

デフォルトではTabularオブジェクトが返される:

列の型をインポートする:

Import要素  (14)

"ColumnCount"  (1)

列の数を取得する:

"ColumnLabels"  (1)

列の名前を読む:

"ColumnTypes"  (1)

列の型をインポートする:

"Data"  (2)

ファイルからデータを取得する:

選択した行のみをインポートする:

選択した列のみをインポートする:

"Dataset"  (2)

Datasetとしてデータを取得する:

選択した行のみをインポートする:

選択した列のみをインポートする:

"Dimensions"  (1)

データの次数をインポートする:

"MetaInformation"  (1)

メタデータをインポートする:

"RowCount"  (1)

行の数を取得する:

"Schema"  (1)

TabularSchemaオブジェクトを取得する:

"Summary"  (1)

ファイルの概要を取得する:

"Tabular"  (2)

ファイルからTabular オブジェクトでデータを取得する:

選択した行のみをインポートする:

選択した列のみをインポートする:

Importオプション  (3)

IncludeMetaInformation  (1)

デフォルトでは,ファイルに格納されたすべてのメタデータがインポートされ,Tabular オブジェクトに埋め込まれる:

メタデータをインポートしない:

"Schema"  (1)

TabularオブジェクトをArrowIPCファイルにエキスポートする:

TabularオブジェクトまたはDatasetオブジェクトがインポートされる場合,デフォルトではファイルに保存されている列ラベルとその型が使用される:

"Schema" オプションを使うと,列ラベルと型を指定できる:

"UseMemoryMappedFile"  (1)

デフォルトでは,メモリマッピングはできない."UseMemoryMappedFile"->True とすると,メモリマッピングができる:

Exportオプション  (6)

"Compression"  (2)

デフォルトでは圧縮は無効になっている:

サポートされている圧縮方法を比べる:

CompressionLevel  (2)

デフォルトでは, CompressionLevelAutomatic値が使用される. これは圧縮方法ごとに異なるデフォルト値に対応している:

各手法での最大圧縮を使用する:

"Streamable"  (2)

デフォルトでは,ExportはArrow IPC形式を使用する:

"Streamable"オプションを使って,Arrow IPC ストリーミング形式を生成する: