Cloud Spanner to Cloud Storage テンプレート
Managed Service for Apache Spark Cloud Spanner to Cloud Storage テンプレートを使用して、Spanner データベースから Cloud Storage にデータを抽出します。
テンプレートの使用
gcloud CLI または Managed Service for Apache Spark API を使用してテンプレートを実行します。
gcloud
後述のコマンドデータを使用する前に、 次のように置き換えます。
- PROJECT_ID: 必須。IAM 設定に載っている プロジェクト ID Google Cloud 。
- REGION: 必須。Compute Engine のリージョン。
- SUBNET: 省略可。サブネットが指定されていない場合、
defaultネットワークの指定された REGION のサブネットが選択されます。例:
projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME - TEMPLATE_VERSION: 必須。最新のテンプレート バージョンまたは特定バージョンの日付(
2023-03-17_v0.1.0-betaなど)にはlatestを指定します(gs://dataproc-templates-binaries にアクセスするか、gcloud storage ls gs://dataproc-templates-binariesを実行して、使用可能なテンプレート バージョンを一覧表示します)。 - INSTANCE: 必須。Spanner インスタンス ID。
- DATABASE: 必須。Spanner データベース ID。
- TABLE: 必須。Spanner 入力テーブル名または Spanner 入力テーブルに対する SQL クエリ。
例(SQL クエリはかっこで囲む必要があります):
(select * from TABLE) - SPANNER_JDBC_DIALECT: 必須。Spanner JDBC ダイアレクト。オプション:
googlesql、postgresql。 デフォルトはgooglesqlです。 - CLOUD_STORAGE_OUTPUT_PATH: 必須。出力が保存される Cloud Storage パス。
例:
gs://example-bucket/example-folder/ - FORMAT: 必須。出力データ形式。選択肢:
avro、parquet、csv、json。 注:avroの場合、jarsgcloud CLI フラグまたは API フィールドに「file:///usr/lib/spark/connector/spark-avro.jar」を追加する必要があります。例(
file://接頭辞は Managed Service for Apache Spark jar ファイルを参照します):--jars=file:///usr/lib/spark/connector/spark-avro.jar,[ ... other jars] - MODE: 必須。Cloud Storage 出力の書き込みモード。
オプション:
append、overwrite、ignore、errorifexists。 - NUM_PARTITIONS: 省略可。テーブルの読み取りと書き込みの並列処理に使用できるパーティションの最大数。
- INPUT_PARTITION_COLUMN、LOWERBOUND、UPPERBOUND: 省略可。使用する場合は、次のパラメータをすべて指定する必要があります。
- INPUT_PARTITION_COLUMN: Spanner 入力テーブルのパーティション列名。
- LOWERBOUND: パーティションの入力ストライドの決定に使用される Spanner 入力テーブル パーティション列の下限。
- UPPERBOUND: パーティションの入力ストライドの決定に使用される Spanner 入力テーブル パーティション列の上限。
- TEMP_VIEW、TEMP_QUERY: 省略可。 これら 2 つのオプションのパラメータを使用して、Cloud Storage にデータを読み込んでいる間に Spark SQL 変換を適用できます。TEMP_VIEW はクエリで使用されるテーブル名と同じにする必要があり、TEMP_QUERY はクエリ ステートメントです。
- SERVICE_ACCOUNT: 省略可。指定されていない場合は、デフォルトの Compute Engine サービス アカウントが使用されます。
- PROPERTY、PROPERTY_VALUE: 省略可。Spark プロパティ=
valueペアのカンマ区切りのリスト。 - LABEL、LABEL_VALUE: 省略可。
label=valueペアのカンマ区切りのリスト。 - LOG_LEVEL: 省略可。ロギングのレベル。
ALL、DEBUG、ERROR、FATAL、INFO、OFF、TRACE、WARNのいずれかです。デフォルト:INFO -
KMS_KEY: 省略可。暗号化に使用する Cloud Key Management Service 鍵。鍵が指定されていない場合、データは保存時に暗号化されます。 Google-owned and Google-managed encryption key
例:
projects/PROJECT_ID/regions/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
次のコマンドを実行します。
Linux、macOS、Cloud Shell
gcloud dataproc batches submit spark \ --class=com.google.cloud.dataproc.templates.main.DataProcTemplate \ --version="1.2" \ --project="PROJECT_ID" \ --region="REGION" \ --jars="gs://dataproc-templates-binaries/TEMPLATE_VERSION/java/dataproc-templates.jar" \ --subnet="SUBNET" \ --kms-key="KMS_KEY" \ --service-account="SERVICE_ACCOUNT" \ --properties="PROPERTY=PROPERTY_VALUE" \ --labels="LABEL=LABEL_VALUE" \ -- --template=SPANNERTOGCS \ --templateProperty log.level="LOG_LEVEL" \ --templateProperty project.id="PROJECT_ID" \ --templateProperty spanner.gcs.input.spanner.id="INSTANCE" \ --templateProperty spanner.gcs.input.database.id="DATABASE" \ --templateProperty spanner.gcs.input.table.id="TABLE" \ --templateProperty spanner.gcs.output.gcs.path="CLOUD_STORAGE_OUTPUT_PATH" \ --templateProperty spanner.gcs.output.gcs.saveMode="MODE" \ --templateProperty spanner.gcs.output.gcs.format="FORMAT" \ --templateProperty spanner.gcs.input.sql.partitionColumn="INPUT_PARTITION_COLUMN" \ --templateProperty spanner.gcs.input.sql.lowerBound="LOWERBOUND" \ --templateProperty spanner.gcs.input.sql.upperBound="UPPERBOUND" \ --templateProperty spanner.spanner.gcs.input.sql.numPartitions="NUM_PARTITIONS" \ --templateProperty spanner.gcs.temp.table="TEMP_VIEW" \ --templateProperty spanner.gcs.temp.query="TEMP_QUERY" \ --templateProperty spanner.jdbc.dialect="SPANNER_JDBC_DIALECT"
Windows(PowerShell)
gcloud dataproc batches submit spark ` --class=com.google.cloud.dataproc.templates.main.DataProcTemplate ` --version="1.2" ` --project="PROJECT_ID" ` --region="REGION" ` --jars="gs://dataproc-templates-binaries/TEMPLATE_VERSION/java/dataproc-templates.jar" ` --subnet="SUBNET" ` --kms-key="KMS_KEY" ` --service-account="SERVICE_ACCOUNT" ` --properties="PROPERTY=PROPERTY_VALUE" ` --labels="LABEL=LABEL_VALUE" ` -- --template=SPANNERTOGCS ` --templateProperty log.level="LOG_LEVEL" ` --templateProperty project.id="PROJECT_ID" ` --templateProperty spanner.gcs.input.spanner.id="INSTANCE" ` --templateProperty spanner.gcs.input.database.id="DATABASE" ` --templateProperty spanner.gcs.input.table.id="TABLE" ` --templateProperty spanner.gcs.output.gcs.path="CLOUD_STORAGE_OUTPUT_PATH" ` --templateProperty spanner.gcs.output.gcs.saveMode="MODE" ` --templateProperty spanner.gcs.output.gcs.format="FORMAT" ` --templateProperty spanner.gcs.input.sql.partitionColumn="INPUT_PARTITION_COLUMN" ` --templateProperty spanner.gcs.input.sql.lowerBound="LOWERBOUND" ` --templateProperty spanner.gcs.input.sql.upperBound="UPPERBOUND" ` --templateProperty spanner.spanner.gcs.input.sql.numPartitions="NUM_PARTITIONS" ` --templateProperty spanner.gcs.temp.table="TEMP_VIEW" ` --templateProperty spanner.gcs.temp.query="TEMP_QUERY" ` --templateProperty spanner.jdbc.dialect="SPANNER_JDBC_DIALECT"
Windows(cmd.exe)
gcloud dataproc batches submit spark ^ --class=com.google.cloud.dataproc.templates.main.DataProcTemplate ^ --version="1.2" ^ --project="PROJECT_ID" ^ --region="REGION" ^ --jars="gs://dataproc-templates-binaries/TEMPLATE_VERSION/java/dataproc-templates.jar" ^ --subnet="SUBNET" ^ --kms-key="KMS_KEY" ^ --service-account="SERVICE_ACCOUNT" ^ --properties="PROPERTY=PROPERTY_VALUE" ^ --labels="LABEL=LABEL_VALUE" ^ -- --template=SPANNERTOGCS ^ --templateProperty log.level="LOG_LEVEL" ^ --templateProperty project.id="PROJECT_ID" ^ --templateProperty spanner.gcs.input.spanner.id="INSTANCE" ^ --templateProperty spanner.gcs.input.database.id="DATABASE" ^ --templateProperty spanner.gcs.input.table.id="TABLE" ^ --templateProperty spanner.gcs.output.gcs.path="CLOUD_STORAGE_OUTPUT_PATH" ^ --templateProperty spanner.gcs.output.gcs.saveMode="MODE" ^ --templateProperty spanner.gcs.output.gcs.format="FORMAT" ^ --templateProperty spanner.gcs.input.sql.partitionColumn="INPUT_PARTITION_COLUMN" ^ --templateProperty spanner.gcs.input.sql.lowerBound="LOWERBOUND" ^ --templateProperty spanner.gcs.input.sql.upperBound="UPPERBOUND" ^ --templateProperty spanner.spanner.gcs.input.sql.numPartitions="NUM_PARTITIONS" ^ --templateProperty spanner.gcs.temp.table="TEMP_VIEW" ^ --templateProperty spanner.gcs.temp.query="TEMP_QUERY" ^ --templateProperty spanner.jdbc.dialect="SPANNER_JDBC_DIALECT"
REST
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 必須。IAM 設定に載っている プロジェクト ID Google Cloud 。
- REGION: 必須。Compute Engine のリージョン。
- SUBNET: 省略可。サブネットが指定されていない場合、
defaultネットワークの指定された REGION のサブネットが選択されます。例:
projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME - TEMPLATE_VERSION: 必須。最新のテンプレート バージョンまたは特定バージョンの日付(
2023-03-17_v0.1.0-betaなど)にはlatestを指定します(gs://dataproc-templates-binaries にアクセスするか、gcloud storage ls gs://dataproc-templates-binariesを実行して、使用可能なテンプレート バージョンを一覧表示します)。 - INSTANCE: 必須。Spanner インスタンス ID。
- DATABASE: 必須。Spanner データベース ID。
- TABLE: 必須。Spanner 入力テーブル名または Spanner 入力テーブルに対する SQL クエリ。
例(SQL クエリはかっこで囲む必要があります):
(select * from TABLE) - SPANNER_JDBC_DIALECT: 必須。Spanner JDBC ダイアレクト。オプション:
googlesql、postgresql。 デフォルトはgooglesqlです。 - CLOUD_STORAGE_OUTPUT_PATH: 必須。出力が保存される Cloud Storage パス。
例:
gs://example-bucket/example-folder/ - FORMAT: 必須。出力データ形式。選択肢:
avro、parquet、csv、json。 注:avroの場合、jarsgcloud CLI フラグまたは API フィールドに「file:///usr/lib/spark/connector/spark-avro.jar」を追加する必要があります。例(
file://接頭辞は Managed Service for Apache Spark jar ファイルを参照します):--jars=file:///usr/lib/spark/connector/spark-avro.jar,[ ... other jars] - MODE: 必須。Cloud Storage 出力の書き込みモード。
オプション:
append、overwrite、ignore、errorifexists。 - NUM_PARTITIONS: 省略可。テーブルの読み取りと書き込みの並列処理に使用できるパーティションの最大数。
- INPUT_PARTITION_COLUMN、LOWERBOUND、UPPERBOUND: 省略可。使用する場合は、次のパラメータをすべて指定する必要があります。
- INPUT_PARTITION_COLUMN: Spanner 入力テーブルのパーティション列名。
- LOWERBOUND: パーティションの入力ストライドの決定に使用される Spanner 入力テーブル パーティション列の下限。
- UPPERBOUND: パーティションの入力ストライドの決定に使用される Spanner 入力テーブル パーティション列の上限。
- TEMP_VIEW、TEMP_QUERY: 省略可。 これら 2 つのオプションのパラメータを使用して、Cloud Storage にデータを読み込んでいる間に Spark SQL 変換を適用できます。TEMP_VIEW はクエリで使用されるテーブル名と同じにする必要があり、TEMP_QUERY はクエリ ステートメントです。
- SERVICE_ACCOUNT: 省略可。指定されていない場合は、デフォルトの Compute Engine サービス アカウントが使用されます。
- PROPERTY、PROPERTY_VALUE: 省略可。Spark プロパティ=
valueペアのカンマ区切りのリスト。 - LABEL、LABEL_VALUE: 省略可。
label=valueペアのカンマ区切りのリスト。 - LOG_LEVEL: 省略可。ロギングのレベル。
ALL、DEBUG、ERROR、FATAL、INFO、OFF、TRACE、WARNのいずれかです。デフォルト:INFO -
KMS_KEY: 省略可。暗号化に使用する Cloud Key Management Service 鍵。鍵が指定されていない場合、データは保存時に暗号化されます。 Google-owned and Google-managed encryption key
例:
projects/PROJECT_ID/regions/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
HTTP メソッドと URL:
POST https://dataproc.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/batches
リクエストの本文(JSON):
{
"environmentConfig":{
"executionConfig":{
"subnetworkUri":"SUBNET",
"kmsKey": "KMS_KEY",
"serviceAccount": "SERVICE_ACCOUNT"
}
},
"labels": {
"LABEL": "LABEL_VALUE"
},
"runtimeConfig": {
"version": "1.2",
"properties": {
"PROPERTY": "PROPERTY_VALUE"
}
},
"sparkBatch":{
"mainClass":"com.google.cloud.dataproc.templates.main.DataProcTemplate",
"args":[
"--template","SPANNERTOGCS",
"--templateProperty","log.level=LOG_LEVEL",
"--templateProperty","project.id=PROJECT_ID",
"--templateProperty","spanner.gcs.input.spanner.id=INSTANCE",
"--templateProperty","spanner.gcs.input.database.id=DATABASE",
"--templateProperty","spanner.gcs.input.table.id=TABLE",
"--templateProperty","spanner.gcs.output.gcs.path=CLOUD_STORAGE_OUTPUT_PATH",
"--templateProperty","spanner.gcs.output.gcs.saveMode=MODE",
"--templateProperty","spanner.gcs.output.gcs.format=FORMAT",
"--templateProperty","spanner.gcs.input.sql.partitionColumn=INPUT_PARTITION_COLUMN",
"--templateProperty","spanner.gcs.input.sql.lowerBound=LOWERBOUND",
"--templateProperty","spanner.gcs.input.sql.upperBound=UPPERBOUND",
"--templateProperty","spanner.gcs.input.sql.numPartitions=NUM_PARTITIONS",
"--templateProperty","spanner.gcs.temp.table=TEMP_VIEW",
"--templateProperty","spanner.gcs.temp.query=TEMP_QUERY",
"--templateProperty spanner.jdbc.dialect=SPANNER_JDBC_DIALECT"
],
"jarFileUris":[
"file:///usr/lib/spark/connector/spark-avro.jar", "gs://dataproc-templates-binaries/TEMPLATE_VERSION/java/dataproc-templates.jar"
]
}
}
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{
"name": "projects/PROJECT_ID/regions/REGION/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.dataproc.v1.BatchOperationMetadata",
"batch": "projects/PROJECT_ID/locations/REGION/batches/BATCH_ID",
"batchUuid": "de8af8d4-3599-4a7c-915c-798201ed1583",
"createTime": "2023-02-24T03:31:03.440329Z",
"operationType": "BATCH",
"description": "Batch"
}
}