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

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

注記:

  • TiDB Cloud は、空のテーブルへの Parquet ファイルのインポートのみをサポートします。すでにデータが含まれている既存のテーブルにデータをインポートするには、このドキュメントに従ってTiDB Cloudを使用して一時的な空のテーブルにデータをインポートし、その後INSERT SELECTステートメントを使用してデータをターゲットの既存のテーブルにコピーします。
  • TiDB 専用クラスターにチェンジフィードがある場合、現在のデータインポート機能は物理インポートモードを使用するため、データをクラスターにインポートできません ([**データのインポート]**ボタンが無効になります)。このモードでは、インポートされたデータは変更ログを生成しないため、変更フィードはインポートされたデータを検出できません。
  • TiDB 専用クラスターのみが GCS からの Parquet ファイルのインポートをサポートしています。

ステップ 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 ステートメントが含まれている場合、最初の DDL ステートメントのみが有効になります。

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

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

  • Parquet ファイルが Amazon S3 にある場合、 Amazon S3 アクセスを設定する .

    AWS アクセス キーまたはロール ARN を使用してバケットにアクセスできます。完了したら、アクセス キー (アクセス キー ID とシークレット アクセス キーを含む) またはロール ARN 値をメモします ( ステップ4で必要になります)。

  • Parquet ファイルが GCS にある場合は、 GCS アクセスを構成する

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

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

  1. ターゲットクラスターのインポートページを開きます。

    1. TiDB Cloudコンソールにログインし、プロジェクトのクラスターページに移動します。

      ヒント:

      複数のプロジェクトがある場合は、左下隅の をクリックして、別のプロジェクトに切り替えます。

    2. ターゲット クラスターの名前をクリックして概要ページに移動し、左側のナビゲーション ペインで[インポート]をクリックします。

  2. インポートページで:

    • TiDB 専用クラスターの場合は、右上隅にある「データのインポート」をクリックします。
    • TiDB サーバーレス クラスターの場合は、アップロード領域の上にある[S3 からデータをインポート]リンクをクリックします。
  3. ソース Parquet ファイルについて次の情報を指定します。

    • 場所: Amazon S3を選択します。
    • データ形式: 「Parquet」を選択します。
    • バケット URI : Parquet ファイルが配置されているバケット URI を選択します。 URI の末尾に/含める必要があることに注意してください (例: s3://sampledate/ingest/ )。
    • バケット アクセス(このフィールドは AWS S3 でのみ表示されます): AWS アクセス キーまたはロール ARN を使用してバケットにアクセスできます。詳細については、 Amazon S3 アクセスを構成するを参照してください。
      • AWS アクセス キー: AWS アクセス キー ID と AWS シークレット アクセス キーを入力します。
      • AWS ロール ARN : ロール ARN 値を入力します。
  4. 事前に作成されたテーブルにインポートするか、 S3 からスキーマとデータをインポートするかを選択できます。

    • 事前に作成されたテーブルにインポートを使用すると、事前に TiDB にテーブルを作成し、データをインポートするテーブルを選択できます。この場合、インポートするテーブルを最大 1000 個選択できます。左側のナビゲーション ペインでChat2Qury をクリックしてテーブルを作成できます。 Chat2Qury の使用方法の詳細については、 AI を活用した Chat2Query でデータを探索するを参照してください。
    • S3 からスキーマとデータをインポートすると、テーブルを作成するための SQL スクリプトをインポートし、S3 に保存されている対応するテーブル データを TiDB にインポートできます。
  5. ソース ファイルが命名規則を満たしていない場合は、単一のターゲット テーブルと CSV ファイルの間にカスタム マッピング ルールを指定できます。その後、提供されたカスタム マッピング ルールを使用してデータ ソース ファイルが再スキャンされます。マッピングを変更するには、 [詳細設定]をクリックし、 [マッピング設定]をクリックします。 [マッピング設定] は、 [事前作成されたテーブルにインポート]選択した場合にのみ使用できることに注意してください。

    • ターゲット データベース: 選択したターゲット データベースの名前を入力します。

    • ターゲット テーブル: 選択したターゲット テーブルの名前を入力します。このフィールドは 1 つの特定のテーブル名のみを受け入れるため、ワイルドカードはサポートされていないことに注意してください。

    • ソース ファイルの URI と名前: ソース ファイルの URI と名前を次の形式で入力します。 s3://[bucket_name]/[data_source_folder]/[file_name].parquet .たとえば、 s3://sampledate/ingest/TableName.01.parquet 。ワイルドカードを使用してソース ファイルと一致させることもできます。例えば:

      • s3://[bucket_name]/[data_source_folder]/my-data?.parquet : そのフォルダー内のmy-dataと 1 文字 ( my-data1.parquetmy-data2.parquetなど) で始まるすべての Parquet ファイルが同じターゲット テーブルにインポートされます。
      • s3://[bucket_name]/[data_source_folder]/my-data*.parquet : my-dataで始まるフォルダー内のすべての Parquet ファイルが同じターゲット テーブルにインポートされます。

      ?*のみがサポートされることに注意してください。

      注記:

      URI にはデータ ソース フォルダーが含まれている必要があります。

  6. [インポートの開始]をクリックします。

  7. インポートの進行状況にCompletedと表示されたら、インポートされたテーブルを確認します。

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

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

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

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

  3. Parquet ファイルのデータ型を確認してください。

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

  4. インポートタスクを再試行してください。

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

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

寄木細工のプリミティブ タイプ寄木細工の論理タイプTiDB または MySQL の型
ダブルダブルダブル
浮く
FIXED_LEN_BYTE_ARRAY(9)DECIMAL(20,0)BIGINT 署名なし
FIXED_LEN_BYTE_ARRAY(N)DECIMAL(p,s)10進数
数値
INT32DECIMAL(p,s)10進数
数値
INT32該当なしINT
ミディアムミント
INT64DECIMAL(p,s)10進数
数値
INT64該当なしBIGINT
INT 符号なし
ミディアムミント未署名
INT64TIMESTAMP_MICROS日付時刻
タイムスタンプ
バイト配列該当なしバイナリ
少し
BLOB
チャー
ラインストリング
ロングブロブ
ミディアムブロブ
複数行の文字列
タイニーブロブ
ヴァービナリー
バイト配列ENUM
日付
10進数
幾何学模様
ジオメトリコレクション
JSON
長文
メディアテキスト
マルチポイント
マルチポリゴン
数値
ポイント
ポリゴン
セット
TEXT
時間
小さなテキスト
VARCHAR
スモールント該当なしINT32
小さな署名なし該当なしINT32
タイイント該当なしINT32
TINYINT 署名なし該当なしINT32

トラブルシューティング

データインポート中の警告を解決する

[インポートの開始]をクリックした後、 can't find the corresponding source filesなどの警告メッセージが表示された場合は、正しいソース ファイルを提供するか、 データインポートの命名規則に従って既存のファイルの名前を変更するか、詳細設定を使用して変更することで問題を解決します。

これらの問題を解決した後、データを再度インポートする必要があります。

インポートされたテーブルの行がゼロ

インポートの進行状況にCompletedと表示されたら、インポートされたテーブルを確認します。行数がゼロの場合は、入力したバケット URI に一致するデータ ファイルがなかったことを意味します。この場合、正しいソース ファイルを提供するか、 データインポートの命名規則に従って既存のファイルの名前を変更するか、または詳細設定を使用して変更を加えることで、この問題を解決します。その後、それらのテーブルを再度インポートします。

このページは役に立ちましたか?

Playground
新規
登録なしで TiDB の機能をワンストップでインタラクティブに体験できます。
製品
TiDB Cloud
TiDB
価格
PoC お問い合わせ
エコシステム
TiKV
TiFlash
OSS Insight
© 2024 PingCAP. All Rights Reserved.
Privacy Policy.