ClickHouseでAvro、Arrow、ORCデータを扱う
Apacheは、人気のある Avro、 Arrow、および Orc を含む、分析環境で活発に使用される複数のデータフォーマットをリリースしました。ClickHouseは、そのリストから任意のフォーマットを使用してデータのインポートおよびエクスポートをサポートしています。
Avroフォーマットでのインポートとエクスポート
ClickHouseは、Hadoopシステムで広く使用されている Apache Avro データファイルの読み取りと書き込みをサポートしています。
avro file からインポートするには、INSERT
ステートメントで Avro フォーマットを使用します:
data() 関数を使用すると、実際にデータをインポートする前にAvroファイルを調べることができます:
Avroファイルにエクスポートするには:
AvroとClickHouseのデータ型
Avroファイルのインポートまたはエクスポートの際には data types matching を考慮してください。Avroファイルからデータを読み込む際には、明示的な型キャストを使用して変換します:
KafkaのAvroメッセージ
KafkaメッセージがAvroフォーマットを使用する場合、ClickHouseは AvroConfluent フォーマットおよび Kafka エンジンを使用してそのようなストリームを読み取ることができます:
Arrowフォーマットでの作業
別の列指向フォーマットは Apache Arrow で、ClickHouseもインポートおよびエクスポートのためにサポートしています。Arrow file からデータをインポートするには、Arrow フォーマットを使用します:
Arrowファイルへのエクスポートも同じ方法で行えます:
また、手動で変換する必要があるかどうかを知るために data types matching を確認してください。
Arrowデータストリーミング
ArrowStream フォーマットは、Arrowストリーミング(メモリ内処理に使用)の作業に使用できます。ClickHouseはArrowストリームの読み書きが可能です。
ClickHouseがArrowデータをストリーミングできることを示すために、以下のPythonスクリプトにパイプします(これはArrowストリーミングフォーマットで入力ストリームを読み込み、結果をPandasテーブルとして出力します):
これで、ClickHouseからデータをストリーミングするために、その出力をスクリプトにパイプできます:
ClickHouseも同じArrowStreamフォーマットを使用してArrowストリームを読み取ることができます:
arrow-stream
をArrowストリーミングデータの可能なソースとして使用しました。
ORCデータのインポートとエクスポート
Apache ORC フォーマットは、通常Hadoop用に使用される列指向ストレージフォーマットです。ClickHouseは、ORC format を使用して Orc data のインポートおよびエクスポートをサポートしています:
また、エクスポートおよびインポートを調整するために、 data types matching および additional settings を確認してください。
さらなる読み物
ClickHouseは、さまざまなシナリオやプラットフォームをカバーするため、多くのフォーマット(テキストおよびバイナリ)のサポートを導入しています。以下の記事で、より多くのフォーマットやそれらとの作業方法を探求してください:
また、clickhouse-local を確認してください - ClickHouseサーバーなしでローカル/リモートファイルで作業するためのフル機能を持ったポータブルツールです。