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

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

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

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

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

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

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

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

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

3つの方法の機能比較​

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

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

適した用途​

SELECT INTO OUTFILE​

次の用途に適しています。

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

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

EXPORT​

次の用途に適しています。

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

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

MySQL Dump​

次の用途に適しています。

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

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

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

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

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

UUID 値が36文字の小文字の正規形式テキストとしてエクスポートされるのは、CSV の場合のみです。Parquet では、UUID 列は Parquet の UUID 論理型アノテーションが付いた FIXED_LEN_BYTE_ARRAY(16) として、正規のビッグエンディアンのバイト順で書き込まれます。ORC には標準の UUID 型がないため、UUID 列は Doris 固有の doris.logical_type=uuid 属性が付いた BINARY として書き込まれます。ARRAY、MAP、STRUCT にネストされた UUID 要素も、最上位の列と同じ表現を使用します。Doris が書き込んだ ORC ファイル、または UUID 論理型アノテーションが付いた Parquet ファイルをテーブル値関数で再読み込みすると、dev ではネイティブの UUID 型が復元されます。Iceberg の UUID フィールドへの書き込みには、Iceberg の列型マッピングが適用されます。

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
uuidbinary
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
uuidfixed_size_binary(16)FIXED_LEN_BYTE_ARRAYUUID
decimaldecimal128FIXED_LEN_BYTE_ARRAYDECIMAL(scale, precision)
structstructParquet Group
mapmapParquet Map
arraylistParquet List
jsonutf8BYTE_ARRAYUTF8
variantutf8BYTE_ARRAYUTF8
bitmapbinaryBYTE_ARRAY
quantile_statebinaryBYTE_ARRAY
hllbinaryBYTE_ARRAY
注記

Parquet Export と Outfile では、enable_int96_timestamps プロパティを使用して Doris の DATETIMEV2 値の物理エンコーディングを選択します。デフォルトは false で、Parquet の timestamp 論理型が付いた INT64 として書き込みます。Hive 2 や Hive 3 など、古い下流のリーダーで必要な場合に限り、true に設定して非推奨の INT96 エンコーディングで書き込みます。非同期 Export では、このプロパティをエクスポートジョブとともに保存し、ジョブ実行時に適用します。明示的にエクスポートした INT96 ファイルを後で Doris が読み込む場合、FileScannerV2 が元の壁時計時刻の値を復元できるよう、Hive Catalog またはファイルのテーブル値関数で hive.parquet.time-zone をエクスポートセッションのタイムゾーンに設定してください。このデフォルトは 4.1.5 以降に適用され、プロパティに指定できる値は true または false のみです。

  • 非同期エクスポート:EXPORT コマンドを使用して、テーブルまたはパーティションのデータを非同期にエクスポートします。
  • SELECT INTO OUTFILE:SELECT INTO OUTFILE を使用して、クエリ結果を同期的にエクスポートします。
  • MySQL Dump:mysqldump ツールを使用して、テーブルスキーマとデータをエクスポートします。
  • データエクスポートのベストプラクティス:エクスポートの同時実行数の調整と、エクスポート速度の評価方法を説明します。