クラウドストレージからTiDB Cloud StarterまたはEssentialにApache Parquetファイルをインポートする
TiDB Cloud StarterまたはTiDB Cloud Essentialアパッチ・パーケットTiDB Cloud Starterファイルをインポートする方法についてTiDB Cloud Essential。
注記:
- TiDB Cloud Dedicatedについては、クラウドストレージからParquetファイルをTiDB Cloud Dedicatedにインポートする。
- TiDB Cloud は、空のテーブルへの Parquet ファイルのインポートのみをサポートしています。既にデータが含まれている既存のテーブルにデータをインポートするには、このドキュメントの手順に従って一時的な空のテーブルにデータをインポートし、
INSERT SELECTステートメントを使用してデータを対象の既存のテーブルにコピーします。- Snappy 圧縮ファイルは公式Snappyフォーマットに存在する必要があります。 Snappy 圧縮の他のバリアントはサポートされていません。
ステップ1. Parquetファイルを準備する
注記:
現在、 TiDB Cloud、サポートされているデータ型のデータ型を含む Parquet ファイルのインポートはサポートされていません。インポートする Parquet ファイルにこれらのデータ型が含まれている場合は、まず (例:
STRING) を使用して Parquet ファイルを再生成する必要があります。または、AWS Glue などのサービスを使用してデータ型を簡単に変換することもできます。
LISTNEST STRUCTBOOLARRAYMAP
Parquetファイルが256MBを超える場合は、それぞれ約256MBのサイズの小さなファイルに分割することを検討してください。
TiDB Cloudは非常に大きなParquetファイルのインポートをサポートしていますが、256MB程度の複数の入力ファイルを使用した場合に最高のパフォーマンスを発揮します。これは、 TiDB Cloudが複数のファイルを並列処理できるため、インポート速度を大幅に向上させることができるからです。
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、Azure Blob Storage、またはAlibaba Cloud Object Storage Serviceのディレクトリで、ソースデータのターゲットテーブルスキーマファイルを次のように作成します。
ソースデータ用のデータベーススキーマファイルを作成します。
ステップ1の命名規則に従ってParquetファイルが作成されている場合、データベーススキーマファイルはデータインポートにおいてオプションです。そうでない場合は、データベーススキーマファイルは必須です。
各データベーススキーマファイルは
${db_name}-schema-create.sql形式である必要があり、CREATE DATABASEDDLステートメントが含まれている必要があります。このファイルを使用すると、 TiDB Cloudは${db_name}データベースを作成し、データのインポート時にそのデータベースにデータを格納します。例えば、次のステートメントを含む
mydb-schema-create.sqlファイルを作成すると、 TiDB Cloud はデータをインポートする際にmydbデータベースを作成します。CREATE DATABASE mydb;ソースデータ用のテーブルスキーマファイルを作成します。
Parquet ファイルが格納されている Amazon S3、GCS、Azure Blob Storage、または Alibaba Cloud Object Storage Service ディレクトリにテーブルスキーマファイルを含めない場合、 TiDB Cloud はデータのインポート時に対応するテーブルを作成しません。
各テーブルスキーマファイルは
${db_name}.${table_name}-schema.sql形式で、CREATE TABLEDDLステートメントを含んでいる必要があります。このファイルを使用すると、 TiDB Cloudはデータのインポート時に${db_table}データベースに${db_name}テーブルを作成します。例えば、次のステートメントを含む
mydb.mytable-schema.sqlファイルを作成すると、 TiDB Cloud はデータをインポートする際にmytableデータベースにmydbテーブルを作成します。CREATE TABLE mytable ( ID INT, REGION VARCHAR(20), COUNT INT );注記:
${db_name}.${table_name}-schema.sqlファイルには、単一の DDL ステートメントのみを含める必要があります。ファイルに複数の DDL ステートメントが含まれている場合、最初のステートメントのみが有効になります。
ステップ3.アカウント間アクセスの設定
TiDB CloudがAmazon S3、GCS、Azure Blob Storage、またはAlibaba Cloud Object Storage Serviceバケット内のParquetファイルにアクセスできるようにするには、次のいずれかの操作を行います。
Parquet ファイルが Amazon S3 にある場合は、 TiDB Cloud StarterまたはEssentialインスタンスに対してAmazon S3へのアクセスを設定する。
バケットにアクセスするには、AWS アクセスキーまたはロール ARN のいずれかを使用できます。完了したら、ステップ4で必要となるため、アクセスキー (アクセスキー ID とシークレット アクセスキーを含む) またはロール ARN の値をメモしておいてください。
Parquet ファイルが GCS にある場合は、 TiDB Cloud StarterまたはEssentialインスタンスに対してGCSへのアクセスを設定する。
Parquet ファイルが Azure Blob Storage に配置されている場合は、 TiDB Cloud StarterまたはEssentialインスタンスのAzure Blob Storageへのアクセスを構成する。
Parquet ファイルが Alibaba Cloud Object Storage Service (OSS) にある場合は、 TiDB Cloud StarterまたはEssentialインスタンスのAlibaba Cloud Object Storage Service (OSS) へのアクセスを設定する。
ステップ4.Parquetファイルをインポートする
TiDB Cloud StarterまたはTiDB Cloud EssentialにParquetファイルをインポートするには、以下の手順を実行してください。
対象のTiDB Cloud StarterまたはEssentialインスタンスのインポートページを開きます。
TiDB Cloudコンソールにログインし、私のTiDBページに移動します。
ヒント:
複数の組織に所属している場合は、左上隅のコンボボックスを使用して、まず目的の組織に切り替えてください。
対象のTiDB Cloud StarterまたはEssentialインスタンスの名前をクリックして概要ページに移動し、左側のナビゲーションペインで「データ」 > 「インポート」をクリックします。
「クラウドストレージからデータをインポート」をクリックします。
「クラウドストレージからデータをインポート」ページで、以下の情報を入力してください。
- ストレージプロバイダー: Amazon S3を選択してください。
- ソースファイルURI :
- 1 つのファイルをインポートする場合は、ソースファイルの URI を
s3://[bucket_name]/[data_source_folder]/[file_name].parquetの形式で入力してください。例:s3://sampledata/ingest/TableName.01.parquet。 - 複数のファイルをインポートする場合は、ソースフォルダのURIを
s3://[bucket_name]/[data_source_folder]/の形式で入力してください。例:s3://sampledata/ingest/。
- 1 つのファイルをインポートする場合は、ソースファイルの URI を
- 認証情報: AWS ロール ARN または AWS アクセス キーを使用してバケットにアクセスできます。詳細については、 Amazon S3へのアクセスを設定する参照してください。
- AWSロールARN :AWSロールARNの値を入力してください。
- AWSアクセスキー:AWSアクセスキーIDとAWSシークレットアクセスキーを入力してください。
「次へ」をクリックしてください。
「宛先マッピング」セクションで、ソースファイルをターゲットテーブルにどのようにマッピングするかを指定します。
ソースファイルURIでディレクトリが指定されている場合、 「自動マッピングにファイル命名規則を使用する」オプションがデフォルトで選択されます。
注記:
ソースファイルURIで単一のファイルが指定されている場合、 「自動マッピングにファイル命名規則を使用する」オプションは表示されず、 TiDB Cloudはソースフィールドにファイル名を自動的に入力します。この場合、データインポートの対象となるデータベースとテーブルを選択するだけで済みます。
TiDB Cloud がファイル命名規則に従うすべてのソース ファイルを対応するテーブルに自動的にマップできるようにするには、このオプションを選択したままにして、データ形式としてParquet を選択します。
ソース Parquet ファイルをターゲットのデータベースおよびテーブルに関連付けるためのマッピング ルールを手動で構成するには、このオプションの選択を解除し、次のフィールドに入力します。
ソース: ファイル名のパターンを
[file_name].parquetの形式で入力してください。例:TableName.01.parquet。ワイルドカードを使用して複数のファイルを照合することもできます。*と?ワイルドカードのみがサポートされています。my-data?.parquet:my-datamy-data1.parquetやmy-data2.parquetのような 1 文字が続くすべての Parquet ファイルに一致します。my-data*.parquet:my-dataで始まるすべての Parquet ファイルに一致します。たとえばmy-data-2023.parquetやmy-data-final.parquetなどです。
対象データベースと対象テーブル:データをインポートする対象データベースとテーブルを選択します。
「次へ」をクリックしてください。TiDB Cloudがソースファイルを適切にスキャンします。
スキャン結果を確認し、検出されたデータファイルと対応するターゲットテーブルをチェックしてから、 「インポート開始」をクリックします。
インポートの進行状況が「完了」と表示されたら、インポートされたテーブルを確認してください。
対象のTiDB Cloud StarterまたはEssentialインスタンスのインポートページを開きます。
TiDB Cloudコンソールにログインし、私のTiDBページに移動します。
ヒント:
複数の組織に所属している場合は、左上隅のコンボボックスを使用して、まず目的の組織に切り替えてください。
対象のTiDB Cloud StarterまたはEssentialインスタンスの名前をクリックして概要ページに移動し、左側のナビゲーションペインで「データ」 > 「インポート」をクリックします。
「クラウドストレージからデータをインポート」をクリックします。
「クラウドストレージからデータをインポート」ページで、以下の情報を入力してください。
- ストレージプロバイダー: Google Cloud Storageを選択してください。
- ソースファイルURI :
- 1 つのファイルをインポートする場合は、ソースファイルの URI を
[gcs|gs]://[bucket_name]/[data_source_folder]/[file_name].parquetの形式で入力してください。例:[gcs|gs]://sampledata/ingest/TableName.01.parquet。 - 複数のファイルをインポートする場合は、ソースフォルダのURIを
[gcs|gs]://[bucket_name]/[data_source_folder]/の形式で入力してください。例:[gcs|gs]://sampledata/ingest/。
- 1 つのファイルをインポートする場合は、ソースファイルの URI を
- 認証情報: GCS IAM役割サービス アカウント キーを使用してバケットにアクセスできます。詳細については、 GCSへのアクセスを設定する参照してください。
「次へ」をクリックしてください。
「宛先マッピング」セクションで、ソースファイルをターゲットテーブルにどのようにマッピングするかを指定します。
ソースファイルURIでディレクトリが指定されている場合、 「自動マッピングにファイル命名規則を使用する」オプションがデフォルトで選択されます。
注記:
ソースファイルURIで単一のファイルが指定されている場合、 「自動マッピングにファイル命名規則を使用する」オプションは表示されず、 TiDB Cloudはソースフィールドにファイル名を自動的に入力します。この場合、データインポートの対象となるデータベースとテーブルを選択するだけで済みます。
TiDB Cloud がファイル命名規則に従うすべてのソース ファイルを対応するテーブルに自動的にマッピングするには、このオプションを選択したままにして、データ形式としてParquet を選択します。
ソース Parquet ファイルをターゲットのデータベースおよびテーブルに関連付けるためのマッピング ルールを手動で構成するには、このオプションの選択を解除し、次のフィールドに入力します。
ソース: ファイル名のパターンを
[file_name].parquetの形式で入力してください。例:TableName.01.parquet。ワイルドカードを使用して複数のファイルを照合することもできます。*と?ワイルドカードのみがサポートされています。my-data?.parquet:my-datamy-data1.parquetやmy-data2.parquetのような 1 文字が続くすべての Parquet ファイルに一致します。my-data*.parquet:my-dataで始まるすべての Parquet ファイルに一致します。たとえばmy-data-2023.parquetやmy-data-final.parquetなどです。
対象データベースと対象テーブル:データをインポートする対象データベースとテーブルを選択します。
「次へ」をクリックしてください。TiDB Cloudがソースファイルを適切にスキャンします。
スキャン結果を確認し、検出されたデータファイルと対応するターゲットテーブルをチェックしてから、 「インポート開始」をクリックします。
インポートの進行状況が「完了」と表示されたら、インポートされたテーブルを確認してください。
対象のTiDB Cloud StarterまたはEssentialインスタンスのインポートページを開きます。
TiDB Cloudコンソールにログインし、私のTiDBページに移動します。
ヒント:
複数の組織に所属している場合は、左上隅のコンボボックスを使用して、まず目的の組織に切り替えてください。
対象のTiDB Cloud StarterまたはEssentialインスタンスの名前をクリックして概要ページに移動し、左側のナビゲーションペインで「データ」 > 「インポート」をクリックします。
「クラウドストレージからデータをインポート」をクリックします。
「クラウドストレージからデータをインポート」ページで、以下の情報を入力してください。
- ストレージプロバイダー: Azure Blob Storageを選択します。
- ソースファイルURI :
- 1 つのファイルをインポートする場合は、ソースファイルの URI を
[azure|https]://[bucket_name]/[data_source_folder]/[file_name].parquetの形式で入力してください。例:[azure|https]://sampledata/ingest/TableName.01.parquet。 - 複数のファイルをインポートする場合は、ソースフォルダのURIを
[azure|https]://[bucket_name]/[data_source_folder]/の形式で入力してください。例:[azure|https]://sampledata/ingest/。
- 1 つのファイルをインポートする場合は、ソースファイルの URI を
- 資格情報: Shared Access Signature (SAS) トークンを使用してバケットにアクセスできます。詳細については、 Azure Blob Storageへのアクセスを構成する参照してください。
「次へ」をクリックしてください。
「宛先マッピング」セクションで、ソースファイルをターゲットテーブルにどのようにマッピングするかを指定します。
ソースファイルURIでディレクトリが指定されている場合、 「自動マッピングにファイル命名規則を使用する」オプションがデフォルトで選択されます。
注記:
ソースファイルURIで単一のファイルが指定されている場合、 「自動マッピングにファイル命名規則を使用する」オプションは表示されず、 TiDB Cloudはソースフィールドにファイル名を自動的に入力します。この場合、データインポートの対象となるデータベースとテーブルを選択するだけで済みます。
TiDB Cloud がファイル命名規則に従うすべてのソース ファイルを対応するテーブルに自動的にマッピングするには、このオプションを選択したままにして、データ形式としてParquet を選択します。
ソース Parquet ファイルをターゲットのデータベースおよびテーブルに関連付けるためのマッピング ルールを手動で構成するには、このオプションの選択を解除し、次のフィールドに入力します。
ソース: ファイル名のパターンを
[file_name].parquetの形式で入力してください。例:TableName.01.parquet。ワイルドカードを使用して複数のファイルを照合することもできます。*と?ワイルドカードのみがサポートされています。my-data?.parquet:my-datamy-data1.parquetやmy-data2.parquetのような 1 文字が続くすべての Parquet ファイルに一致します。my-data*.parquet:my-dataで始まるすべての Parquet ファイルに一致します。たとえばmy-data-2023.parquetやmy-data-final.parquetなどです。
対象データベースと対象テーブル:データをインポートする対象データベースとテーブルを選択します。
「次へ」をクリックしてください。TiDB Cloudがソースファイルを適切にスキャンします。
スキャン結果を確認し、検出されたデータファイルと対応するターゲットテーブルをチェックしてから、 「インポート開始」をクリックします。
インポートの進行状況が「完了」と表示されたら、インポートされたテーブルを確認してください。
対象のTiDB Cloud StarterまたはEssentialインスタンスのインポートページを開きます。
TiDB Cloudコンソールにログインし、私のTiDBページに移動します。
ヒント:
複数の組織に所属している場合は、左上隅のコンボボックスを使用して、まず目的の組織に切り替えてください。
対象のTiDB Cloud StarterまたはEssentialインスタンスの名前をクリックして概要ページに移動し、左側のナビゲーションペインで「データ」 > 「インポート」をクリックします。
「クラウドストレージからデータをインポート」をクリックします。
「クラウドストレージからデータをインポート」ページで、以下の情報を入力してください。
- ストレージプロバイダー: Alibaba Cloud OSSを選択してください。
- ソースファイルURI :
- 1 つのファイルをインポートする場合は、ソースファイルの URI を
oss://[bucket_name]/[data_source_folder]/[file_name].parquetの形式で入力してください。例:oss://sampledata/ingest/TableName.01.parquet。 - 複数のファイルをインポートする場合は、ソースフォルダのURIを
oss://[bucket_name]/[data_source_folder]/の形式で入力してください。例:oss://sampledata/ingest/。
- 1 つのファイルをインポートする場合は、ソースファイルの URI を
- Credential : AccessKey ペアを使用してバケットにアクセスできます。詳細については、 Alibaba Cloudオブジェクトストレージサービス(OSS)へのアクセスを設定する参照してください。
「次へ」をクリックしてください。
「宛先マッピング」セクションで、ソースファイルをターゲットテーブルにどのようにマッピングするかを指定します。
ソースファイルURIでディレクトリが指定されている場合、 「自動マッピングにファイル命名規則を使用する」オプションがデフォルトで選択されます。
注記:
ソースファイルURIで単一のファイルが指定されている場合、 「自動マッピングにファイル命名規則を使用する」オプションは表示されず、 TiDB Cloudはソースフィールドにファイル名を自動的に入力します。この場合、データインポートの対象となるデータベースとテーブルを選択するだけで済みます。
TiDB Cloud がファイル命名規則に従うすべてのソース ファイルを対応するテーブルに自動的にマッピングするには、このオプションを選択したままにして、データ形式としてParquet を選択します。
ソース Parquet ファイルをターゲットのデータベースおよびテーブルに関連付けるためのマッピング ルールを手動で構成するには、このオプションの選択を解除し、次のフィールドに入力します。
ソース: ファイル名のパターンを
[file_name].parquetの形式で入力してください。例:TableName.01.parquet。ワイルドカードを使用して複数のファイルを照合することもできます。*と?ワイルドカードのみがサポートされています。my-data?.parquet:my-datamy-data1.parquetやmy-data2.parquetのような 1 文字が続くすべての Parquet ファイルに一致します。my-data*.parquet:my-dataで始まるすべての Parquet ファイルに一致します。たとえばmy-data-2023.parquetやmy-data-final.parquetなどです。
対象データベースと対象テーブル:データをインポートする対象データベースとテーブルを選択します。
「次へ」をクリックしてください。TiDB Cloudがソースファイルを適切にスキャンします。
スキャン結果を確認し、検出されたデータファイルと対応するターゲットテーブルをチェックしてから、 「インポート開始」をクリックします。
インポートの進行状況が「完了」と表示されたら、インポートされたテーブルを確認してください。
インポートタスクを実行する際に、サポートされていない変換や無効な変換が検出された場合、 TiDB Cloud はインポートジョブを自動的に終了し、インポートエラーを報告します。
インポートエラーが発生した場合は、以下の手順を実行してください。
部分的にインポートされたテーブルを削除します。
テーブルスキーマファイルを確認してください。エラーがある場合は、テーブルスキーマファイルを修正してください。
Parquetファイル内のデータ型を確認してください。
Parquet ファイルにサポートされていないデータ型 (たとえば、
NEST STRUCT、ARRAY、またはMAP) が含まれている場合は、サポートされているデータサポートされているデータ型(たとえば、STRING)。インポートタスクをもう一度実行してみてください。
サポートされているデータ型
以下の表は、TiDB Cloud StarterおよびTiDB Cloud Essentialにインポートできるサポートされている Parquet データ型の一覧です。
トラブルシューティング
データインポート中の警告を解決する
[インポートの開始]をクリックした後、 can't find the corresponding source filesなどの警告メッセージが表示された場合は、正しいソース ファイルを提供するか、 データインポートの命名規則に従って既存のファイルの名前を変更するか、詳細設定を使用して変更することで問題を解決します。
これらの問題を解決した後、データを再度インポートする必要があります。
インポートされたテーブルに行が0件あります
インポートの進行状況が「完了」と表示されたら、インポートされたテーブルを確認してください。行数がゼロの場合は、入力したバケットURIに一致するデータファイルがなかったことを意味します。この場合は、正しいソースファイルを指定するか、既存のファイルをデータインポートの命名規則に従って名前変更するか、または詳細設定を使用して変更することで問題を解決してください。その後、再度テーブルをインポートしてください。