Spanner to Cloud Storage Text テンプレートは、Spanner テーブルからデータを読み取り、CSV テキスト ファイルとして Cloud Storage に書き込むバッチ パイプラインです。
パイプラインの要件
- パイプラインを実行する前に、入力 Spanner テーブルが存在すること。
テンプレートのパラメータ
必須パラメータ
- spannerTable: データを読み取る Spanner テーブル。
- spannerProjectId: データを読み取る Spanner データベースを含む Google Cloud プロジェクトの ID。
- spannerInstanceId: リクエストされたテーブルのインスタンス ID。
- spannerDatabaseId: リクエストされたテーブルのデータベース ID。
- textWritePrefix: データの書き込み先を示す Cloud Storage パスの接頭辞(例: gs://mybucket/somefolder/)。
オプション パラメータ
- csvTempDirectory: 一時的な CSV ファイルが書き込まれる Cloud Storage パス(例: gs://your-bucket/your-path)。
- spannerPriority: Spanner 呼び出しのリクエストの優先度(https://cloud.google.com/spanner/docs/reference/rest/v1/RequestOptions)。指定できる値は、
HIGH
、MEDIUM
、LOW
です。デフォルト値はMEDIUM
です。 - spannerHost: テンプレート内で呼び出す Cloud Spanner のエンドポイント。テスト専用です(例: https://batch-spanner.googleapis.com)。デフォルトは https://batch-spanner.googleapis.com です。
- spannerSnapshotTime: 読み取る Spanner データベースのバージョンに対応するタイムスタンプ。タイムスタンプは RFC 3339(https://tools.ietf.org/html/rfc3339)の UTC Zulu 形式で指定する必要があります。タイムスタンプは過去の日付でなければならず、タイムスタンプ ステイルネスの最大値(https://cloud.google.com/spanner/docs/timestamp-bounds#maximum_timestamp_staleness)が適用されます(例: 1990-12-31T23:59:60Z)。デフォルトは空です。
- dataBoostEnabled:
true
に設定すると、Spanner Data Boost のコンピューティング リソースを使用してジョブを実行するときに、Spanner OLTP ワークフローへの影響をほぼゼロにすることができます。true の場合、spanner.databases.useDataBoost
Identity and Access Management(IAM)権限が必要です。詳細については、Data Boost の概要(https://cloud.google.com/spanner/docs/databoost/databoost-overview)をご覧ください。デフォルトは false です。
テンプレートを実行する
コンソール
- Dataflow の [テンプレートからジョブを作成] ページに移動します。 [テンプレートからジョブを作成] に移動
- [ジョブ名] フィールドに、固有のジョブ名を入力します。
- (省略可)[リージョン エンドポイント] で、プルダウン メニューから値を選択します。デフォルトのリージョンは
us-central1
です。Dataflow ジョブを実行できるリージョンのリストについては、Dataflow のロケーションをご覧ください。
- [Dataflow テンプレート] プルダウン メニューから、[ the Cloud Spanner to Text Files on Cloud Storage template] を選択します。
- 表示されたパラメータ フィールドに、パラメータ値を入力します。
- [ジョブを実行] をクリックします。
gcloud
シェルまたはターミナルで、テンプレートを実行します。
gcloud dataflow jobs run JOB_NAME \ --gcs-location gs://dataflow-templates-REGION_NAME/VERSION/Spanner_to_GCS_Text \ --region REGION_NAME \ --parameters \ spannerProjectId=SPANNER_PROJECT_ID,\ spannerDatabaseId=DATABASE_ID,\ spannerInstanceId=INSTANCE_ID,\ spannerTable=TABLE_ID,\ textWritePrefix=gs://BUCKET_NAME/output/
次のように置き換えます。
JOB_NAME
: 一意の任意のジョブ名VERSION
: 使用するテンプレートのバージョン使用できる値は次のとおりです。
latest
: 最新バージョンのテンプレートを使用します。このテンプレートは、バケット内で日付のない親フォルダ(gs://dataflow-templates-REGION_NAME/latest/)にあります。- バージョン名(例:
2023-09-12-00_RC00
)。特定のバージョンのテンプレートを使用します。このテンプレートは、バケット内で対応する日付の親フォルダ(gs://dataflow-templates-REGION_NAME/)にあります。
REGION_NAME
: Dataflow ジョブをデプロイするリージョン(例:us-central1
)SPANNER_PROJECT_ID
: データを読み取る Spanner データベースの Google Cloud プロジェクト IDDATABASE_ID
: Spanner データベース IDBUCKET_NAME
: Cloud Storage バケットの名前INSTANCE_ID
: Spanner インスタンス IDTABLE_ID
: Spanner テーブル ID
API
REST API を使用してテンプレートを実行するには、HTTP POST リクエストを送信します。API とその認証スコープの詳細については、projects.templates.launch
をご覧ください。
POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/templates:launch?gcsPath=gs://dataflow-templates-LOCATION/VERSION/Spanner_to_GCS_Text { "jobName": "JOB_NAME", "parameters": { "spannerProjectId": "SPANNER_PROJECT_ID", "spannerDatabaseId": "DATABASE_ID", "spannerInstanceId": "INSTANCE_ID", "spannerTable": "TABLE_ID", "textWritePrefix": "gs://BUCKET_NAME/output/" }, "environment": { "zone": "us-central1-f" } }
次のように置き換えます。
PROJECT_ID
: Dataflow ジョブを実行する Google Cloud プロジェクトの IDJOB_NAME
: 一意の任意のジョブ名VERSION
: 使用するテンプレートのバージョン使用できる値は次のとおりです。
latest
: 最新バージョンのテンプレートを使用します。このテンプレートは、バケット内で日付のない親フォルダ(gs://dataflow-templates-REGION_NAME/latest/)にあります。- バージョン名(例:
2023-09-12-00_RC00
)。特定のバージョンのテンプレートを使用します。このテンプレートは、バケット内で対応する日付の親フォルダ(gs://dataflow-templates-REGION_NAME/)にあります。
LOCATION
: Dataflow ジョブをデプロイするリージョン(例:us-central1
)SPANNER_PROJECT_ID
: データを読み取る Spanner データベースの Google Cloud プロジェクト IDDATABASE_ID
: Spanner データベース IDBUCKET_NAME
: Cloud Storage バケットの名前INSTANCE_ID
: Spanner インスタンス IDTABLE_ID
: Spanner テーブル ID
次のステップ
- Dataflow テンプレートについて学習する。
- Google 提供のテンプレートのリストを確認する。