ClickHouse で Avro、Arrow、ORC データを扱う
Apache は、分析環境で広く利用されている複数のデータ形式を提供しており、その中には広く利用されている Avro、Arrow、Orc などが含まれます。ClickHouse では、これらのいずれの形式を用いたデータのインポートおよびエクスポートが可能です。
Avro 形式でのインポートおよびエクスポート
ClickHouse は、Hadoop システムで広く使用されている Apache Avro データファイルの読み書きをサポートしています。
avro ファイルからインポートするには、INSERT 文で Avro 形式を使用します。
file() 関数を使用すると、実際にデータをインポートする前に Avro ファイルを事前に調査することもできます。
Avro ファイルにエクスポートするには:
Avro と ClickHouse のデータ型
Avro ファイルをインポートまたはエクスポートする際は、データ型の対応 を確認してください。Avro ファイルからデータを読み込む際には、明示的な型キャストを使用して変換してください。
Kafka における Avro メッセージ
Kafka メッセージが Avro 形式を使用している場合、ClickHouse は AvroConfluent フォーマットと Kafka エンジンを使用して、これらのストリームを読み取ることができます。
Arrow フォーマットの利用
もう一つのカラムナフォーマットとして Apache Arrow があります。これは ClickHouse でのインポートおよびエクスポートにも対応しています。Arrow ファイル からデータをインポートするには、Arrow フォーマットを使用します。
Arrow ファイルへのエクスポートも同様に行えます。
また、data types matching を参照して、手動で変換が必要な型がないか確認してください。
Arrow データストリーミング
ArrowStream フォーマットは、Arrow ストリーミング(インメモリ処理に使用)データを扱うために利用できます。ClickHouse は Arrow ストリームの読み書きが可能です。
ClickHouse がどのように Arrow データをストリーミングできるかを示すために、次の Python スクリプトにパイプで渡します(Arrow ストリーミング形式の入力ストリームを読み取り、結果を Pandas のテーブルとして出力します):
これで、ClickHouse の出力をスクリプトにパイプしてデータをストリーミングできるようになりました。
ClickHouse は、同じ ArrowStream フォーマットを使用することで Arrow ストリームも読み取れます。
Arrow ストリーミングデータのソースの一例として arrow-stream を使用しました。
ORC データのインポートとエクスポート
Apache ORC は、主に Hadoop で使用される列指向ストレージ形式です。ClickHouse は、ORC フォーマット を使用して ORC データ のインポートおよびエクスポートの両方をサポートしています。
また、エクスポートおよびインポートを最適化するために、データ型の対応や追加設定も確認してください。
参考情報
ClickHouse は、多様なシナリオやプラットフォームをカバーするために、テキスト形式とバイナリ形式の両方を含む多数の形式をサポートしています。形式の種類やその扱い方については、次の記事を参照してください。
あわせて clickhouse-local も参照してください。ClickHouse サーバーを用意することなく、ローカル / リモートのファイルを扱うことができる、ポータブルなフル機能ツールです。