📣

TiDB Cloud Serverless が
Starter
に変わりました!このページは自動翻訳されたものです。
原文はこちらからご覧ください。

クラウドストレージからTiDB Cloud DedicatedにApache Parquetファイルをインポートする

このドキュメントでは、Amazon Simple Storage Service (Amazon S3)、Google Cloud Storage (GCS)、またはAzure Blob StorageからTiDB Cloud DedicatedにApache Parquetファイルをインポートする方法について説明します。Parquetファイルは、非圧縮またはGoogle スナッピーで圧縮された状態でインポートできます。その他のParquet圧縮コーデックはサポートされていません。

制限事項

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

  • TiDB Cloud Dedicated クラスターでチェンジフィードまたはポイントインタイムリストア有効になっている場合、現在のデータインポート機能は物理インポートモード使用しているため、クラスターにデータをインポートできません(「データのインポート」ボタンは無効になります)。このモードでは、インポートされたデータは変更ログを生成しないため、変更フィードとポイントインタイム復元はインポートされたデータを検出できません。

ステップ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ファイルのインポートをサポートしていますが、256MB程度の複数の入力ファイルで最適なパフォーマンスを発揮します。これは、 TiDB Cloudが複数のファイルを並列処理できるため、インポート速度が大幅に向上するからです。

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

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

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

    注記:

    • 場合によっては、前述のルールに従って Parquet ファイル名を更新できない場合 (たとえば、Parquet ファイル リンクが他のプログラムでも使用されている場合) は、ファイル名を変更せずに、 ステップ4マッピング設定を使用してソース データを単一のターゲット テーブルにインポートできます。
    • Snappy 圧縮ファイルは公式Snappyフォーマットである必要があります。その他の Snappy 圧縮形式はサポートされていません。

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

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

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

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

    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、または Azure Blob Storage ディレクトリにテーブル スキーマ ファイルを含めない場合、 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ファイルには1つのDDL文のみを含めることができます。ファイルに複数のDDL文が含まれている場合、最初の文のみが有効になります。

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

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

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

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

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

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

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

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

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

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

        ヒント:

        左上隅のコンボ ボックスを使用して、組織、プロジェクト、クラスターを切り替えることができます。

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

    2. Cloud Storage からデータをインポートを選択します。

    3. 「Amazon S3 からのデータのインポート」ページで、次の情報を入力します。

      • 含まれるスキーマファイル: ソースフォルダにターゲットテーブルのスキーマファイル(例: ${db_name}-schema-create.sql )が含まれている場合は「はい」を選択します。含まれていない場合は「いいえ」を選択します。
      • データ形式: Parquetを選択します。
      • フォルダURI : ソースフォルダのURIをs3://[bucket_name]/[data_source_folder]/形式で入力します。パスは/で終わる必要があります。例: s3://sampledata/ingest/
      • バケットアクセス: バケットにアクセスするには、AWS IAMロール ARN または AWS アクセスキーのいずれかを使用できます。
        • AWS ロール ARN (推奨):AWS IAMロールの ARN 値を入力します。バケットのIAMロールがまだない場合は、「 AWS CloudFormation で新規ロールを作成するには、こちらをクリックしてください」をクリックし、画面の指示に従って、提供されている AWS CloudFormation テンプレートを使用して作成できます。または、バケットのIAMロール ARN を手動で作成することもできます。
        • AWS アクセスキー: AWS アクセスキー ID と AWS シークレットアクセスキーを入力します。
        • 両方の方法の詳細な手順については、 Amazon S3 アクセスを構成する参照してください。
    4. [接続]をクリックします。

    5. [宛先]セクションで、ターゲット データベースとテーブルを選択します。

      複数のファイルをインポートする場合、 「詳細設定」 > 「マッピング設定」を使用して、個々のターゲットテーブルと対応するParquetファイルのマッピングをカスタマイズできます。ターゲットデータベースとテーブルごとに、以下の設定を行います。

      • ターゲット データベース: リストから対応するデータベース名を選択します。
      • ターゲット テーブル: リストから対応するテーブル名を選択します。
      • ソースファイルのURIと名前: フォルダ名とファイル名を含むソースファイルの完全なURIを、 s3://[bucket_name]/[data_source_folder]/[file_name].parquet形式で入力してください。例: s3://sampledata/ingest/TableName.01.parquetワイルドカード ( ?* ) を使用して複数のファイルに一致させることもできます。例:
        • s3://[bucket_name]/[data_source_folder]/my-data1.parquet : my-data1.parquet in [data_source_folder]という名前の単一の Parquet ファイルがターゲット テーブルにインポートされます。
        • s3://[bucket_name]/[data_source_folder]/my-data?.parquet : my-dataで始まり、その後に[data_source_folder]の 1 つの文字 ( my-data1.parquetmy-data2.parquetなど) が続くすべての Parquet ファイルが同じターゲット テーブルにインポートされます。
        • s3://[bucket_name]/[data_source_folder]/my-data*.parquet : [data_source_folder]内のmy-dataで始まるすべての Parquet ファイル ( my-data10.parquetmy-data100.parquetなど) が同じターゲット テーブルにインポートされます。
    6. [インポートの開始]クリックします。

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

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

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

        ヒント:

        左上隅のコンボ ボックスを使用して、組織、プロジェクト、クラスターを切り替えることができます。

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

    2. Cloud Storage からデータをインポートを選択します。

    3. 「Cloud Storage からデータをインポート」ページで、ソース Parquet ファイルについて次の情報を入力します。

      • 含まれるスキーマファイル: ソースフォルダにターゲットテーブルのスキーマファイル(例: ${db_name}-schema-create.sql )が含まれている場合は「はい」を選択します。含まれていない場合は「いいえ」を選択します。
      • データ形式: Parquetを選択します。
      • フォルダURI : ソースフォルダのURIをgs://[bucket_name]/[data_source_folder]/形式で入力します。パスは/で終わる必要があります。例: gs://sampledata/ingest/
      • Google Cloud サービスアカウント ID : TiDB Cloud は、このページで一意のサービスアカウント ID(例: example-service-account@your-project.iam.gserviceaccount.com )を提供します。このサービスアカウント ID に、Google Cloud プロジェクト内の GCS バケットに対する必要なIAM権限(「ストレージオブジェクト閲覧者」など)を付与する必要があります。詳細については、 GCS アクセスを構成するご覧ください。
    4. [接続]をクリックします。

    5. [宛先]セクションで、ターゲット データベースとテーブルを選択します。

      複数のファイルをインポートする場合、 「詳細設定」 > 「マッピング設定」を使用して、個々のターゲットテーブルと対応するParquetファイルのマッピングをカスタマイズできます。ターゲットデータベースとテーブルごとに、以下の設定を行います。

      • ターゲット データベース: リストから対応するデータベース名を選択します。
      • ターゲット テーブル: リストから対応するテーブル名を選択します。
      • ソースファイルのURIと名前: フォルダ名とファイル名を含むソースファイルの完全なURIを、 gs://[bucket_name]/[data_source_folder]/[file_name].parquet形式で入力してください。例: gs://sampledata/ingest/TableName.01.parquetワイルドカード ( ?* ) を使用して複数のファイルに一致させることもできます。例:
        • gs://[bucket_name]/[data_source_folder]/my-data1.parquet : my-data1.parquet in [data_source_folder]という名前の単一の Parquet ファイルがターゲット テーブルにインポートされます。
        • gs://[bucket_name]/[data_source_folder]/my-data?.parquet : my-dataで始まり、その後に[data_source_folder]の 1 つの文字 ( my-data1.parquetmy-data2.parquetなど) が続くすべての Parquet ファイルが同じターゲット テーブルにインポートされます。
        • gs://[bucket_name]/[data_source_folder]/my-data*.parquet : [data_source_folder]内のmy-dataで始まるすべての Parquet ファイル ( my-data10.parquetmy-data100.parquetなど) が同じターゲット テーブルにインポートされます。
    6. [インポートの開始]クリックします。

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

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

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

        ヒント:

        左上隅のコンボ ボックスを使用して、組織、プロジェクト、クラスターを切り替えることができます。

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

    2. Cloud Storage からデータをインポートを選択します。

    3. Azure Blob Storage からのデータのインポートページで、次の情報を入力します。

      • 含まれるスキーマファイル: ソースフォルダにターゲットテーブルのスキーマファイル(例: ${db_name}-schema-create.sql )が含まれている場合は「はい」を選択します。含まれていない場合は「いいえ」を選択します。
      • データ形式: Parquetを選択します。
      • フォルダーURI : ソースファイルが保存されているAzure Blob StorageのURIをhttps://[account_name].blob.core.windows.net/[container_name]/[data_source_folder]/形式で入力します。パスは/で終わる必要があります。例: https://myaccount.blob.core.windows.net/mycontainer/data-ingestion/
      • SAS トークン: TiDB Cloud がAzure Blob Storage コンテナー内のソースファイルにアクセスできるように、アカウント SAS トークンを入力します。まだトークンをお持ちでない場合は、提供されている Azure ARM テンプレートを使用して作成できます。「 Azure ARM テンプレートを使用して新規作成するには、こちらをクリックしてください」をクリックし、画面の指示に従ってください。または、アカウント SAS トークンを手動で作成することもできます。詳細については、 Azure Blob Storage アクセスを構成する参照してください。
    4. [接続]をクリックします。

    5. [宛先]セクションで、ターゲット データベースとテーブルを選択します。

      複数のファイルをインポートする場合、 「詳細設定」 > 「マッピング設定」を使用して、個々のターゲットテーブルと対応するParquetファイルのマッピングをカスタマイズできます。ターゲットデータベースとテーブルごとに、以下の設定を行います。

      • ターゲット データベース: リストから対応するデータベース名を選択します。
      • ターゲット テーブル: リストから対応するテーブル名を選択します。
      • ソースファイルのURIと名前: フォルダ名とファイル名を含むソースファイルの完全なURIを、 https://[account_name].blob.core.windows.net/[container_name]/[data_source_folder]/[file_name].parquet形式で入力してください。例: https://myaccount.blob.core.windows.net/mycontainer/data-ingestion/TableName.01.parquetワイルドカード ( ?* ) を使用して複数のファイルに一致させることもできます。例:
        • https://[account_name].blob.core.windows.net/[container_name]/[data_source_folder]/my-data1.parquet : my-data1.parquet in [data_source_folder]という名前の単一の Parquet ファイルがターゲット テーブルにインポートされます。
        • https://[account_name].blob.core.windows.net/[container_name]/[data_source_folder]/my-data?.parquet : my-dataで始まり、その後に[data_source_folder]の 1 つの文字 ( my-data1.parquetmy-data2.parquetなど) が続くすべての Parquet ファイルが同じターゲット テーブルにインポートされます。
        • https://[account_name].blob.core.windows.net/[container_name]/[data_source_folder]/my-data*.parquet : [data_source_folder]内のmy-dataで始まるすべての Parquet ファイル ( my-data10.parquetmy-data100.parquetなど) が同じターゲット テーブルにインポートされます。
    6. [インポートの開始]クリックします。

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

    インポートタスクの実行中に、サポートされていない変換や無効な変換が検出された場合、 TiDB Cloud はインポートジョブを自動的に終了し、インポートエラーを報告します。詳細は「ステータス」フィールドで確認できます。

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

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

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

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

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

    4. インポートタスクをもう一度試してください。

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

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

    寄木細工のプリミティブタイプParquet論理型TiDBまたはMySQLの型
    ダブルダブルダブル
    フロート
    固定長バイト配列(9)10進数(20,0)BIGINT 符号なし
    固定長バイト配列(N)DECIMAL(p,s)小数点
    数値
    INT32DECIMAL(p,s)小数点
    数値
    INT32該当なしINT
    ミディアムミント
    INT64DECIMAL(p,s)小数点
    数値
    INT64該当なしビッグイント
    符号なし整数
    ミディアムミント 未署名
    INT64タイムスタンプ_マイクロ秒日時
    タイムスタンプ
    バイト配列該当なしバイナリ
    少し
    ブロブ
    チャー
    ラインストリング
    ロングブロブ
    ミディアムブロブ
    マルチラインストリング
    タイニーブロブ
    VARBINARY
    バイト配列列挙型
    日付
    小数点
    幾何学
    ジオメトリコレクション
    JSON
    長文
    中テキスト
    マルチポイント
    マルチポリゴン
    数値
    ポイント
    ポリゴン
    セット
    TEXT
    時間
    小さなテキスト
    可変長文字
    スモールイント該当なしINT32
    SMALLINT 符号なし該当なしINT32
    TINYINT該当なしINT32
    TINYINT 符号なし該当なしINT32

    トラブルシューティング

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

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

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

    インポートされたテーブルに行が 0 行あります

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

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