重要
このページは英語版のページを機械翻訳しています。原文はこちらからご覧ください。

Amazon S3 または GCS からTiDB Cloudに Apache Parquet ファイルをインポートする

非圧縮および Snappy 圧縮アパッチ寄木細工形式のデータ ファイルの両方をTiDB Cloudにインポートできます。このドキュメントでは、Amazon Simple Storage Service (Amazon S3) または Google Cloud Storage (GCS) からTiDB Cloudに Parquet ファイルをインポートする方法について説明します。

ノート:

TiDB Cloudは、空のテーブルへの Parquet ファイルのインポートのみをサポートしています。既にデータが含まれている既存のテーブルにデータをインポートするには、このドキュメントに従って、 TiDB Cloudを使用してデータを一時的な空のテーブルにインポートし、 INSERT SELECTステートメントを使用してデータをターゲットの既存のテーブルにコピーします。

ステップ 1.Parquet ファイルを準備する

ノート:

現在、 TiDB Cloudは、次のデータ型のいずれかを含む Parquet ファイルのインポートをサポートしていません。インポートする Parquet ファイルにそのようなデータ型が含まれている場合は、最初にサポートされているデータ型 (たとえば、 STRING ) を使用して Parquet ファイルを再生成する必要があります。または、AWS Glue などのサービスを使用してデータ型を簡単に変換することもできます。

  • LIST
  • NEST STRUCT
  • BOOL
  • ARRAY
  • MAP
  1. Parquet ファイルが 256 MB より大きい場合は、それぞれのサイズが約 256 MB の小さなファイルに分割することを検討してください。

    TiDB Cloudは、非常に大きな Parquet ファイルのインポートをサポートしていますが、サイズが 256 MB 前後の複数の入力ファイルで最高のパフォーマンスを発揮します。これは、 TiDB Cloudが複数のファイルを並行して処理できるため、インポート速度が大幅に向上する可能性があるためです。

  2. 次のように Parquet ファイルに名前を付けます。

    • Parquet ファイルにテーブル全体のすべてのデータが含まれている場合は、ファイルに${db_name}.${table_name}.parquet形式の名前を付けます。これは、データをインポートするときに${db_name}.${table_name}テーブルにマップされます。

    • 1 つのテーブルのデータが複数の Parquet ファイルに分割されている場合は、これらの Parquet ファイルに数値のサフィックスを追加します。たとえば、 ${db_name}.${table_name}.000001.parquet${db_name}.${table_name}.000002.parquetです。数値サフィックスは連続していなくてもかまいませんが、昇順でなければなりません。また、数字の前にゼロを追加して、すべてのサフィックスが同じ長さになるようにする必要もあります。

    ノート:

    上記のルールに従って Parquet ファイル名を更新できない場合 (たとえば、Parquet ファイル リンクが他のプログラムでも使用されている場合など) は、ファイル名を変更せずにステップ 4カスタム パターンを使用してソース データをインポートできます。単一のターゲット テーブルに。

ステップ 2. ターゲット表スキーマを作成する

Parquet ファイルにはスキーマ情報が含まれていないため、Parquet ファイルからTiDB Cloudにデータをインポートする前に、次のいずれかの方法を使用してテーブル スキーマを作成する必要があります。

  • 方法 1: TiDB Cloudで、ソース データのターゲット データベースとテーブルを作成します。

  • 方法 2: Parquet ファイルが配置されている Amazon S3 または GCS ディレクトリで、ソース データのターゲット テーブル スキーマ ファイルを次のように作成します。

    1. ソース データのデータベース スキーマ ファイルを作成します。

      Parquet ファイルがステップ1の命名規則に従っている場合、データベース スキーマ ファイルはデータ インポートのオプションです。それ以外の場合、データベース スキーマ ファイルは必須です。

      各データベース スキーマ ファイルは${db_name}-schema-create.sql形式で、 CREATE DATABASE DDL ステートメントを含む必要があります。このファイルを使用すると、 TiDB Cloudは、データをインポートするときにデータを格納するための${db_name}のデータベースを作成します。

      たとえば、次のステートメントを含むmydb-scehma-create.sqlファイルを作成すると、データをインポートするときにTiDB Cloudによってmydbデータベースが作成されます。

      CREATE DATABASE mydb;
      
    2. ソース データのテーブル スキーマ ファイルを作成します。

      Parquet ファイルが配置されている Amazon S3 または GCS ディレクトリにテーブル スキーマ ファイルを含めない場合、データをインポートするときに、 TiDB Cloudは対応するテーブルを作成しません。

      各テーブル スキーマ ファイルは${db_name}.${table_name}-schema.sql形式で、 CREATE TABLE DDL ステートメントを含む必要があります。このファイルを使用すると、データをインポートすると、 TiDB Cloudは${db_name}データベースに${db_table}テーブルを作成します。

      たとえば、次のステートメントを含むmydb.mytable-schema.sqlファイルを作成すると、データをインポートすると、 TiDB Cloudはmydbデータベースにmytableテーブルを作成します。

      CREATE TABLE mytable (
      ID INT,
      REGION VARCHAR(20),
      COUNT INT );
      

      ノート:

      ${db_name}.${table_name}-schema.sqlファイルには、単一の DDL ステートメントのみを含める必要があります。ファイルに複数の DDL ステートメントが含まれている場合、最初のステートメントのみが有効になります。

ステップ 3. クロスアカウント アクセスを構成する

TiDB Cloudが Amazon S3 または GCS バケット内の Parquet ファイルにアクセスできるようにするには、次のいずれかを実行します。

ステップ 4. Parquet ファイルをTiDB Cloudにインポートする

Parquet ファイルをTiDB Cloudにインポートするには、次の手順を実行します。

  1. [**アクティブなクラスター]**ページに移動します。

  2. ターゲットクラスタの領域を見つけて、領域の右上隅にある [データのインポート] をクリックします。 [データ インポート タスク]ページが表示されます。

    ヒント:

    または、[アクティブなクラスター] ページでターゲットクラスタの名前をクリックし、右上隅にある [データのインポート] をクリックすることもできます。

  3. [**データ インポート タスク]**ページで、次の情報を指定します。

    • データ ソース タイプ: データ ソースのタイプを選択します。

    • バケット URL : Parquet ファイルが配置されているバケット URL を選択します。

    • データ形式: Parquetを選択します。

    • 資格情報の設定(このフィールドは AWS S3 でのみ表示されます): Role-ARNの Role ARN 値を入力します。

    • ターゲット クラスタ: [ユーザー名]および [パスワード] フィールドに入力します。

    • DB/Tables Filter : インポートするテーブルをフィルタリングする場合は、このフィールドに,で区切られた 1 つ以上のテーブル フィルターを指定できます。

      例えば:

      • db01.* : db01データベース内のすべてのテーブルがインポートされます。
      • db01.table01*,db01.table02* : db01データベースのtable01table02で始まるすべてのテーブルがインポートされます。
      • !db02.* : db02データベースのテーブルを除き、他のすべてのテーブルがインポートされます。 !は、インポートする必要のないテーブルを除外するために使用されます。
      • *.* : すべてのテーブルがインポートされます。

      詳細については、 テーブル フィルター snytaxを参照してください。

    • カスタム パターン: ファイル名が特定のパターンに一致する Parquet ファイルを単一のターゲット テーブルにインポートする場合は、カスタム パターン機能を有効にします。

      ノート:

      この機能を有効にすると、1 つのインポート タスクで一度に 1 つのテーブルにのみデータをインポートできます。この機能を使用してデータを別のテーブルにインポートする場合は、インポートするたびに別のターゲット テーブルを指定して、複数回インポートする必要があります。

      カスタム パターンが有効になっている場合、次のフィールドで、Parquet ファイルと単一のターゲット テーブルとの間のカスタム マッピング ルールを指定する必要があります。

      • オブジェクト名パターン: インポートする Parquet ファイルの名前と一致するパターンを入力します。 Parquet ファイルが 1 つしかない場合は、ここにファイル名を直接入力できます。

        例えば:

        • my-data?.parquet : my-dataと 1 文字 ( my-data1.parquetmy-data2.parquetなど) で始まるすべての Parquet ファイルが同じターゲット テーブルにインポートされます。
        • my-data*.parquet : my-dataで始まるすべての Parquet ファイルが同じターゲット テーブルにインポートされます。
      • ターゲット テーブル名: TiDB Cloudのターゲット テーブルの名前を入力します。これは${db_name}.${table_name}形式である必要があります。たとえば、 mydb.mytableです。このフィールドは特定のテーブル名を 1 つしか受け付けないため、ワイルドカードはサポートされていないことに注意してください。

  4. [**インポート]**をクリックします。

    データベース リソースの消費に関する警告メッセージが表示されます。

  5. [**確認]**をクリックします。

    TiDB Cloudは、指定されたバケット URL のデータにアクセスできるかどうかの検証を開始します。検証が完了して成功すると、インポート タスクが自動的に開始されます。 AccessDeniedエラーが発生した場合は、 S3 からのデータ インポート中のアクセス拒否エラーのトラブルシューティングを参照してください。

  6. インポートの進行状況が成功を示したら、 Total Files:の後の数字を確認します。

    数値がゼロの場合は、[**オブジェクト名パターン]**フィールドに入力した値と一致するデータ ファイルがないことを意味します。この場合、[オブジェクト名のパターン]フィールドに入力ミスがないかどうかを確認し、再試行してください。

インポート タスクの実行時に、サポートされていない変換または無効な変換が検出された場合、 TiDB Cloudはインポート ジョブを自動的に終了し、インポート エラーを報告します。

インポート エラーが発生した場合は、次の手順を実行します。

  1. 部分的にインポートされたテーブルを削除します。

  2. テーブル スキーマ ファイルを確認してください。エラーがある場合は、テーブル スキーマ ファイルを修正します。

  3. Parquet ファイルのデータ型を確認します。

    サポートされていないデータ型 ( NEST STRUCTARRAY 、またはMAPなど) が Parquet ファイルに含まれている場合は、 サポートされているデータ型 ( STRINGなど) を使用して Parquet ファイルを再生成する必要があります。

  4. インポート タスクを再試行します。

サポートされているデータ型

次の表に、 TiDB Cloudにインポートできる、サポートされている Parquet データ型を示します。

寄木細工プリミティブ型寄木細工の論理型TiDB または MySQL の型
ダブルダブルダブル
浮く
FIXED_LEN_BYTE_ARRAY(9)10 進数 (20,0)BIGINT 未署名
FIXED_LEN_BYTE_ARRAY(N)DECIMAL(p,s)小数
数値
INT32DECIMAL(p,s)小数
数値
INT32なしINT
ミディアムミント
INT64DECIMAL(p,s)小数
数値
INT64なしBIGINT
符号なし整数
ミディアムミント 未署名
INT64TIMESTAMP_MICROS日付時刻
タイムスタンプ
バイト配列なしバイナリ
少し
BLOB
CHAR
LINESTRING
ロングブロブ
ミディアムブロブ
複数行文字列
小さな塊
VARBINARY
バイト配列ストリング列挙型
日にち
小数
ジオメトリ
ジオメトリコレクション
JSON
ロングテキスト
中文
マルチポイント
マルチポリゴン
数値

ポリゴン
設定
文章
時間
小さなテキスト
VARCHAR
SMALLINTなしINT32
SMALLINT 未署名なしINT32
TINYINTなしINT32
TINYINT UNSIGNEDなしINT32