Cloud Storage からTiDB Cloud Starter または Essential に Apache Parquet ファイルをインポートする
TiDB Cloud Starter またはTiDB Cloud Essential には、非圧縮形式と Snappy 圧縮形式のApache パーケットのデータファイルをインポートできます。このドキュメントでは、Amazon Simple Storage Service (Amazon S3)、Google Cloud Storage (GCS)、Azure Blob Storage、または Alibaba Cloud Object Storage Service (OSS) から、Parquet ファイルをTiDB Cloud Starter またはTiDB Cloud Essential にインポートする方法について説明します。
注記:
- TiDB Cloud Dedicated については、 クラウドストレージからTiDB Cloud Dedicated に Parquet ファイルをインポートする参照してください。
- TiDB Cloud は、空のテーブルへの Parquet ファイルのインポートのみをサポートしています。既にデータが含まれている既存のテーブルにデータをインポートするには、このドキュメントに従って一時的な空のテーブルにデータをインポートし、その後、
INSERT SELECT
ステートメントを使用してデータを対象の既存のテーブルにコピーします。- Snappy 圧縮ファイルは公式Snappyフォーマットである必要があります。その他の Snappy 圧縮形式はサポートされていません。
ステップ1. Parquetファイルを準備する
注記:
現在、 TiDB Cloud は、以下のいずれかのデータ型を含む Parquet ファイルのインポートをサポートしていません。インポートする Parquet ファイルにこれらのデータ型が含まれている場合は、まずサポートされているデータ型 (例:
STRING
)を使用して Parquet ファイルを再生成する必要があります。あるいは、AWS Glue などのサービスを使用してデータ型を簡単に変換することもできます。
LIST
NEST STRUCT
BOOL
ARRAY
MAP
Parquet ファイルが 256 MB より大きい場合は、サイズがそれぞれ約 256 MB の小さなファイルに分割することを検討してください。
TiDB Cloudは非常に大きなParquetファイルのインポートをサポートしていますが、256MB程度の複数の入力ファイルで最適なパフォーマンスを発揮します。これは、 TiDB Cloudが複数のファイルを並列処理できるため、インポート速度が大幅に向上するからです。
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のマッピング設定を使用してソース データを単一のターゲット テーブルにインポートできます。
ステップ2. ターゲットテーブルスキーマを作成する
Parquet ファイルにはスキーマ情報が含まれていないため、Parquet ファイルからTiDB Cloudにデータをインポートする前に、次のいずれかの方法でテーブル スキーマを作成する必要があります。
方法 1: TiDB Cloudで、ソース データのターゲット データベースとテーブルを作成します。
方法 2: Parquet ファイルが配置されている Amazon S3、GCS、Azure Blob Storage、または Alibaba Cloud Object Storage Service ディレクトリで、次のようにソース データのターゲット テーブル スキーマ ファイルを作成します。
ソース データのデータベース スキーマ ファイルを作成します。
Parquetファイルがステップ1の命名規則に従っている場合、データベーススキーマファイルはデータのインポートに必須ではありません。そうでない場合は、データベーススキーマファイルは必須です。
各データベーススキーマファイルは
${db_name}-schema-create.sql
形式で、CREATE DATABASE
DDLステートメントを含んでいる必要があります。このファイルを使用して、 TiDB Cloudはデータをインポートする際に、データを格納するための${db_name}
データベースを作成します。たとえば、次のステートメントを含む
mydb-scehma-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 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、または Alibaba Cloud Object Storage Service バケット内の Parquet ファイルにアクセスできるようにするには、次のいずれかを実行します。
Parquet ファイルが Amazon S3 にある場合は、クラスターごとにAmazon S3 アクセスを構成する 。
バケットにアクセスするには、AWS アクセスキーまたはロール ARN のいずれかを使用できます。完了したら、アクセスキー(アクセスキー ID とシークレットアクセスキーを含む)またはロール ARN の値をメモしておいてください。これらはステップ4で必要になります。
Parquet ファイルが GCS にある場合は、クラスタごとにGCS アクセスを構成する 。
Parquet ファイルが Azure Blob Storage にある場合は、クラスターごとにAzure Blob Storage アクセスを構成する 。
Parquet ファイルが Alibaba Cloud Object Storage Service (OSS) にある場合は、クラスターごとにAlibaba Cloud Object Storage Service (OSS) アクセスを構成する 。
ステップ4. Parquetファイルのインポート
Parquet ファイルをTiDB Cloud Starter またはTiDB Cloud Essential にインポートするには、次の手順を実行します。
ターゲット クラスターのインポートページを開きます。
TiDB Cloudコンソールにログインし、プロジェクトのクラスターページに移動します。
ヒント:
左上隅のコンボ ボックスを使用して、組織、プロジェクト、クラスターを切り替えることができます。
ターゲット クラスターの名前をクリックして概要ページに移動し、左側のナビゲーション ペインで[データ] > [インポート]をクリックします。
「Cloud Storage からデータをインポート」をクリックします。
「クラウド ストレージからデータをインポート」ページで、次の情報を入力します。
- ストレージプロバイダー: 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
。ワイルドカードを使用して複数のファイルに一致させることもできます。6と*
?
ワイルドカードのみがサポートされています。my-data?.parquet
:my-data
で始まり、その後にmy-data1.parquet
やmy-data2.parquet
などの 1 文字が続くすべての Parquet ファイルに一致します。my-data*.parquet
:my-data-2023.parquet
やmy-data-final.parquet
など、my-data
で始まるすべての Parquet ファイルに一致します。
ターゲット データベースとターゲット テーブル: データをインポートするターゲット データベースとテーブルを選択します。
「次へ」をクリックします。TiDB TiDB Cloud はそれに応じてソースファイルをスキャンします。
スキャン結果を確認し、見つかったデータ ファイルと対応するターゲット テーブルをチェックして、 [インポートの開始] をクリックします。
インポートの進行状況に「完了」と表示されたら、インポートされたテーブルを確認します。
ターゲット クラスターのインポートページを開きます。
TiDB Cloudコンソールにログインし、プロジェクトのクラスターページに移動します。
ヒント:
左上隅のコンボ ボックスを使用して、組織、プロジェクト、クラスターを切り替えることができます。
ターゲット クラスターの名前をクリックして概要ページに移動し、左側のナビゲーション ペインで[データ] > [インポート]をクリックします。
Cloud Storage からデータをインポートをクリックします。
「クラウド ストレージからデータをインポート」ページで、次の情報を入力します。
- ストレージ プロバイダー: 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
。ワイルドカードを使用して複数のファイルに一致させることもできます。6と*
?
ワイルドカードのみがサポートされています。my-data?.parquet
:my-data
で始まり、その後にmy-data1.parquet
やmy-data2.parquet
などの 1 文字が続くすべての Parquet ファイルに一致します。my-data*.parquet
:my-data-2023.parquet
やmy-data-final.parquet
など、my-data
で始まるすべての Parquet ファイルに一致します。
ターゲット データベースとターゲット テーブル: データをインポートするターゲット データベースとテーブルを選択します。
「次へ」をクリックします。TiDB TiDB Cloud はそれに応じてソースファイルをスキャンします。
スキャン結果を確認し、見つかったデータ ファイルと対応するターゲット テーブルをチェックして、 [インポートの開始] をクリックします。
インポートの進行状況に「完了」と表示されたら、インポートされたテーブルを確認します。
ターゲット クラスターのインポートページを開きます。
TiDB Cloudコンソールにログインし、プロジェクトのクラスターページに移動します。
ヒント:
左上隅のコンボ ボックスを使用して、組織、プロジェクト、クラスターを切り替えることができます。
ターゲット クラスターの名前をクリックして概要ページに移動し、左側のナビゲーション ペインで[データ] > [インポート]をクリックします。
Cloud Storage からデータをインポートをクリックします。
「クラウド ストレージからデータをインポート」ページで、次の情報を入力します。
- ストレージ プロバイダー: 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
。ワイルドカードを使用して複数のファイルに一致させることもできます。6と*
?
ワイルドカードのみがサポートされています。my-data?.parquet
:my-data
で始まり、その後にmy-data1.parquet
やmy-data2.parquet
などの 1 文字が続くすべての Parquet ファイルに一致します。my-data*.parquet
:my-data-2023.parquet
やmy-data-final.parquet
など、my-data
で始まるすべての Parquet ファイルに一致します。
ターゲット データベースとターゲット テーブル: データをインポートするターゲット データベースとテーブルを選択します。
「次へ」をクリックします。TiDB TiDB Cloud はそれに応じてソースファイルをスキャンします。
スキャン結果を確認し、見つかったデータ ファイルと対応するターゲット テーブルをチェックして、 [インポートの開始] をクリックします。
インポートの進行状況に「完了」と表示されたら、インポートされたテーブルを確認します。
ターゲット クラスターのインポートページを開きます。
TiDB Cloudコンソールにログインし、プロジェクトのクラスターページに移動します。
ヒント:
左上隅のコンボ ボックスを使用して、組織、プロジェクト、クラスターを切り替えることができます。
ターゲット クラスターの名前をクリックして概要ページに移動し、左側のナビゲーション ペインで[データ] > [インポート]をクリックします。
「Cloud Storage からデータをインポート」をクリックします。
「クラウド ストレージからデータをインポート」ページで、次の情報を入力します。
- ストレージプロバイダー: 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を次の形式で入力します
- 認証情報: アクセスキーペアを使用してバケットにアクセスできます。詳細については、 Alibaba Cloud Object Storage Service (OSS) アクセスを構成するご覧ください。
「次へ」をクリックします。
宛先マッピングセクションで、ソース ファイルをターゲット テーブルにマップする方法を指定します。
ソース ファイル URIにディレクトリが指定されている場合は、自動マッピングにファイル命名規則を使用するオプションがデフォルトで選択されます。
注記:
ソースファイルURIに単一のファイルが指定されている場合、 「自動マッピングにファイル命名規則を使用する」オプションは表示されず、 TiDB Cloudはソースフィールドにファイル名を自動的に入力します。この場合、データのインポート対象となるデータベースとテーブルを選択するだけで済みます。
TiDB Cloud がファイルの命名規則続くすべてのソース ファイルを対応するテーブルに自動的にマップするようにするには、このオプションを選択したまま、データ形式としてParquetを選択します。
ソース Parquet ファイルをターゲット データベースおよびテーブルに関連付けるためのマッピング ルールを手動で構成するには、このオプションの選択を解除し、次のフィールドに入力します。
ソース: ファイル名のパターンを
[file_name].parquet
形式で入力します。例:TableName.01.parquet
。ワイルドカードを使用して複数のファイルに一致させることもできます。6と*
?
ワイルドカードのみがサポートされています。my-data?.parquet
:my-data
で始まり、その後にmy-data1.parquet
やmy-data2.parquet
などの 1 文字が続くすべての Parquet ファイルに一致します。my-data*.parquet
:my-data-2023.parquet
やmy-data-final.parquet
など、my-data
で始まるすべての Parquet ファイルに一致します。
ターゲット データベースとターゲット テーブル: データをインポートするターゲット データベースとテーブルを選択します。
「次へ」をクリックします。TiDB TiDB Cloud はそれに応じてソースファイルをスキャンします。
スキャン結果を確認し、見つかったデータ ファイルと対応するターゲット テーブルをチェックして、 [インポートの開始] をクリックします。
インポートの進行状況に「完了」と表示されたら、インポートされたテーブルを確認します。
インポート タスクを実行するときに、サポートされていない変換または無効な変換が検出されると、 TiDB Cloud はインポート ジョブを自動的に終了し、インポート エラーを報告します。
インポート エラーが発生した場合は、次の手順を実行します。
部分的にインポートされたテーブルを削除します。
テーブルスキーマファイルを確認してください。エラーがある場合は、テーブルスキーマファイルを修正してください。
Parquet ファイル内のデータ型を確認します。
Parquet ファイルにサポートされていないデータ型 (たとえば、
NEST STRUCT
、ARRAY
、MAP
) が含まれている場合は、 サポートされているデータ型 (たとえば、STRING
) を使用して Parquet ファイルを再生成する必要があります。インポートタスクをもう一度試してください。
サポートされているデータ型
次の表は、TiDB Cloud Starter およびTiDB Cloud Essential にインポートできるサポートされている Parquet データ型を示しています。
寄木細工のプリミティブタイプ | Parquet論理型 | TiDBまたはMySQLの型 |
---|---|---|
ダブル | ダブル | ダブル フロート |
固定長バイト配列(9) | 10進数(20,0) | BIGINT 符号なし |
固定長バイト配列(N) | DECIMAL(p,s) | 小数点 数値 |
INT32 | DECIMAL(p,s) | 小数点 数値 |
INT32 | 該当なし | INT ミディアムミント 年 |
INT64 | DECIMAL(p,s) | 小数点 数値 |
INT64 | 該当なし | ビッグイント 符号なし整数 ミディアムミント 未署名 |
INT64 | タイムスタンプ_マイクロ秒 | 日時 タイムスタンプ |
バイト配列 | 該当なし | バイナリ 少し ブロブ チャー ラインストリング ロングブロブ ミディアムブロブ マルチラインストリング タイニーブロブ VARBINARY |
バイト配列 | 弦 | 列挙型 日付 小数点 幾何学 ジオメトリコレクション JSON 長文 中テキスト マルチポイント マルチポリゴン 数値 ポイント ポリゴン セット TEXT 時間 小さなテキスト 可変長文字 |
スモールイント | 該当なし | INT32 |
SMALLINT 符号なし | 該当なし | INT32 |
タイニーイント | 該当なし | INT32 |
TINYINT 符号なし | 該当なし | INT32 |
トラブルシューティング
データのインポート中に警告を解決する
[インポートの開始]をクリックした後、 can't find the corresponding source files
などの警告メッセージが表示された場合は、正しいソース ファイルを指定するか、 データインポートの命名規則に従って既存のファイルの名前を変更するか、 [詳細設定]を使用して変更を加えることで、この問題を解決します。
これらの問題を解決した後、データを再度インポートする必要があります。
インポートされたテーブルに行が 0 行あります
インポートの進行状況が「完了」と表示されたら、インポートされたテーブルを確認してください。行数が0の場合、入力したバケットURIに一致するデータファイルが存在しないことを意味します。この場合、正しいソースファイルを指定するか、 データインポートの命名規則に従って既存のファイルの名前を変更するか、詳細設定を使用して変更を加えることで問題を解決してください。その後、該当するテーブルを再度インポートしてください。