メインコンテンツまでスキップ
に最終更新

データエクスポートの概要

データエクスポート機能は、クエリ結果セットまたは Apache Doris のテーブルデータを、指定したファイル形式で指定したストレージシステムに書き出します。主に結果セットのダウンロードやシステム間のデータ交換に使用します。

データエクスポートとデータバックアップの違い​

データエクスポートとデータバックアップは、どちらも Apache Doris から外部ストレージにデータを出力できますが、用途が異なります。主な違いを次の表に示します。

比較項目データエクスポートデータバックアップ
出力先HDFS、オブジェクトストレージ、ローカルファイルシステムHDFS、オブジェクトストレージ
データ形式Parquet、ORC、CSV などのオープンな形式Apache Doris の内部ストレージ形式
実行速度中程度(データの読み取りと出力先の形式への変換が必要)高速(Doris のデータファイルを直接アップロードし、解析や変換は不要)
柔軟性SQL でエクスポート範囲を柔軟に指定できるテーブル単位の完全バックアップのみをサポート
主な用途結果セットのダウンロード、異なるシステム間のデータ交換データのバックアップ、Apache Doris クラスター間のデータ移行

エクスポート方法の選択​

Apache Doris には、用途に応じて選べる次の三つのデータエクスポート方法があります。

  • SELECT INTO OUTFILE: 任意の SQL 結果セットをエクスポートできます。
  • EXPORT: テーブル単位でデータの一部または全体をエクスポートできます。
  • MySQL DUMP: MySQL Dump コマンドと互換性のあるデータエクスポート方法です。

三つの方法の機能比較​

実行方式、SQL の機能、同時実行、対応形式について、三つのエクスポート方法を次の表で比較します。

比較項目SELECT INTO OUTFILEEXPORTMySQL DUMP
同期 / 非同期同期非同期(送信後、SHOW EXPORT で進捗を確認)同期
任意の SQL をサポート対応非対応非対応
指定したパーティションのエクスポート対応対応非対応
指定した Tablet のエクスポート対応非対応非対応
同時エクスポート対応、高い同時実行性(ORDER BY など単一ノードの演算子による制約あり)対応、高い同時実行性(Tablet 単位で同時実行)非対応、シングルスレッドでエクスポート
対応する出力形式Parquet、ORC、CSVParquet、ORC、CSVMySQL Dump 独自形式
外部テーブルをサポート対応一部対応非対応
ビューをサポート対応対応対応
対応する出力先S3、HDFSS3、HDFSLOCAL

適した用途​

SELECT INTO OUTFILE​

次のような場合に適しています。

  • エクスポートするデータに、フィルタリング、集計、結合などの複雑な処理が必要な場合。
  • タスクを同期的に実行したい場合。

詳しい使い方は、SELECT INTO OUTFILE を参照してください。

EXPORT​

次のような場合に適しています。

  • 単純なフィルター条件だけを使い、大量のデータを単一のテーブルからエクスポートする場合。
  • タスクを非同期で送信したい場合。

詳しい使い方は、EXPORT による非同期エクスポート を参照してください。

MySQL Dump​

次のような場合に適しています。

  • MySQL エコシステムとの互換性が必要で、テーブルのスキーマとデータの両方をエクスポートする場合。
  • 開発、テスト、またはデータ量がごく少ない場合に限って使用する場合。

詳しい使い方は、MySQL Dump を参照してください。

エクスポートしたファイルの列の型マッピング​

Parquet と ORC のファイル形式にはそれぞれ独自のデータ型定義があります。エクスポート時、Apache Doris は内部のデータ型を対応する Parquet または ORC の型に自動変換します。CSV には型定義がなく、すべてのデータがテキストとして出力されます。

Apache Doris のデータ型と ORC および Parquet の形式との対応を以下に示します。

ORC の型マッピング​

Doris の型ORC の型
booleanboolean
tinyinttinyint
smallintsmallint
intint
bigintbigint
largeIntstring
datestring
datev2date
datetimestring
datetimev2timestamp
timestamptztimestamp with local time zone (ORC TIMESTAMP_INSTANT; 4.1.5 以降、時点の意味を保持)
varbinarybinary
floatfloat
doubledouble
char / varchar / stringstring
decimaldecimal
structstruct
mapmap
arrayarray
jsonstring
variantstring
bitmapbinary
quantile_statebinary
hllbinary

Parquet の型マッピング​

Apache Doris が Parquet ファイル形式にエクスポートする際は、まずメモリ内の Doris データを Arrow のメモリ内形式に変換し、その後 Arrow が Parquet ファイルに書き出します。型の対応は次のとおりです。

Doris の型Arrow の型Parquet の物理型Parquet の論理型
booleanbooleanBOOLEAN
tinyintint8INT32INT_8
smallintint16INT32INT_16
intint32INT32INT_32
bigintint64INT64INT_64
largeIntutf8BYTE_ARRAYUTF8
dateutf8BYTE_ARRAYUTF8
datev2date32INT32DATE
datetimeutf8BYTE_ARRAYUTF8
datetimev2timestampINT96 / INT64TIMESTAMP(MICROS/MILLIS/SECONDS)
floatfloat32FLOAT
doublefloat64DOUBLE
char / varchar / stringutf8BYTE_ARRAYUTF8
decimaldecimal128FIXED_LEN_BYTE_ARRAYDECIMAL(scale, precision)
structstructParquet Group
mapmapParquet Map
arraylistParquet List
jsonutf8BYTE_ARRAYUTF8
variantutf8BYTE_ARRAYUTF8
bitmapbinaryBYTE_ARRAY
quantile_statebinaryBYTE_ARRAY
hllbinaryBYTE_ARRAY
注記

4.1.5 以降、Outfile と Export では enable_int96_timestamps によって Parquet のタイムスタンプのエンコード方式を制御します。デフォルトは false で、論理タイムスタンプ型を付けた INT64 を書き出します。以前のバージョンでは INT96 がデフォルトでした。レガシーリーダーとの互換性が必要な場合にのみ true に設定してください。指定できる値は true と false のみです。代わりに parquet.enable_int96_timestamps を使用しないでください。時点と壁時計時刻のタイムスタンプの意味については、Parquet を参照してください。