Cloud Storage to JDBC テンプレート
Managed Service for Apache Spark Cloud Storage to JDBC テンプレートを使用して、Cloud Storage から JDBC データベースにデータを抽出します。
テンプレートの使用
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 - JDBC_CONNECTOR_CLOUD_STORAGE_PATH: 必須。JDBC コネクタ jar が格納されるファイル名を含む、Cloud Storage
の完全なパス。次のコマンドを使用して、Cloud Storage にアップロードする JDBC コネクタをダウンロードできます。
- MySQL:
wget http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.30.tar.gz - Postgres SQL:
wget https://jdbc.postgresql.org/download/postgresql-42.2.6.jar - MS SQL Server:
wget https://repo1.maven.org/maven2/com/microsoft/sqlserver/mssql-jdbc/6.4.0.jre8/mssql-jdbc-6.4.0.jre8.jar - Oracle:
wget https://repo1.maven.org/maven2/com/oracle/database/jdbc/ojdbc8/21.7.0.0/ojdbc8-21.7.0.0.jar
- MySQL:
- CLOUD_STORAGE_PATH: 必須。入力ファイルが格納される Cloud Storage パス。
例:
gs://templates/cloud_storage_to_jdbc_input - FORMAT: 必須。出力データ形式。選択肢:
avro、parquet、csv、orc。デフォルト:avro注: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。デフォルト:ErrorIfExists - 必要となる JDBC_CONNECTION_URL の作成に次の変数が使用されます。
- JDBC_HOST
- JDBC_PORT
- JDBC_DATABASE、または Oracle の場合は JDBC_SERVICE
- JDBC_USERNAME
- JDBC_PASSWORD
次のいずれかのコネクタ固有の形式を使用して JDBC_CONNECTION_URL を作成します。
- MySQL:
jdbc:mysql://JDBC_HOST:JDBC_PORT/JDBC_DATABASE?user=JDBC_USERNAME&password=JDBC_PASSWORD - Postgres SQL:
jdbc:postgresql://JDBC_HOST:JDBC_PORT/JDBC_DATABASE?user=JDBC_USERNAME&password=JDBC_PASSWORD - MS SQL Server:
jdbc:sqlserver://JDBC_HOST:JDBC_PORT;databaseName=JDBC_DATABASE;user=JDBC_USERNAME;password=JDBC_PASSWORD - Oracle:
jdbc:oracle:thin:@//JDBC_HOST:JDBC_PORT/JDBC_SERVICE?user=JDBC_USERNAME&password=
- JDBC_TABLE: 必須。出力が書き込まれるテーブル名。
- DRIVER: 必須。接続に使用される JDBC ドライバ:
- MySQL:
com.mysql.cj.jdbc.Driver - Postgres SQL:
org.postgresql.Driver - MS SQL Server:
com.microsoft.sqlserver.jdbc.SQLServerDriver - Oracle:
oracle.jdbc.driver.OracleDriver
- MySQL:
- TEMPLATE_VERSION: 必須。最新のテンプレート バージョンまたは特定バージョンの日付(
2023-03-17_v0.1.0-betaなど)にはlatestを指定します(gs://templates-binaries にアクセスするか、gcloud storage ls gs://templates-binariesを実行して、使用可能なテンプレート バージョンを一覧表示します)。 - LOG_LEVEL: 省略可。ロギングのレベル。
ALL、DEBUG、ERROR、FATAL、INFO、OFF、TRACE、WARNのいずれかです。デフォルト:INFO - NUM_PARTITIONS: 省略可。テーブルの書き込みの並列処理に使用できるパーティションの最大数。指定すると、この値が JDBC の出力接続に使用されます。デフォルトは、Spark
read()によって設定された初期パーティションです。 - BATCH_SIZE: 省略可。ラウンド トリップごとに挿入するレコードの数。デフォルト:
1000。 - SERVICE_ACCOUNT: 省略可。指定されていない場合は、デフォルトの Compute Engine サービス アカウントが使用されます。
- PROPERTY、PROPERTY_VALUE: 省略可。Spark プロパティ=
valueペアのカンマ区切りのリスト。 - LABEL、LABEL_VALUE: 省略可。
label=valueペアのカンマ区切りのリスト。 -
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 \ --project="PROJECT_ID" \ --region="REGION" \ --version="1.2" \ --jars="gs://templates-binaries/TEMPLATE_VERSION/java/templates.jar,JDBC_CONNECTOR_CLOUD_STORAGE_PATH" \ --subnet="SUBNET" \ --kms-key="KMS_KEY" \ --service-account="SERVICE_ACCOUNT" \ --properties="PROPERTY=PROPERTY_VALUE" \ --labels="LABEL=LABEL_VALUE" \ -- --template=GCSTOJDBC \ --templateProperty project.id="PROJECT_ID" \ --templateProperty log.level="LOG_LEVEL" \ --templateProperty gcs.jdbc.input.location="CLOUD_STORAGE_PATH" \ --templateProperty gcs.jdbc.input.format="FORMAT" \ --templateProperty gcs.jdbc.output.saveMode="MODE" \ --templateProperty gcs.jdbc.output.url="JDBC_CONNECTION_URL" \ --templateProperty gcs.jdbc.output.table="JDBC_TABLE" \ --templateProperty gcs.jdbc.output.driver="DRIVER" \ --templateProperty gcs.jdbc.spark.partitions="NUM_PARTITIONS" \ --templateProperty gcs.jdbc.output.batchInsertSize="BATCH_SIZE"
Windows(PowerShell)
gcloud dataproc batches submit spark ` --class=com.google.cloud.dataproc.templates.main.DataProcTemplate ` --project="PROJECT_ID" ` --region="REGION" ` --version="1.2" ` --jars="gs://templates-binaries/TEMPLATE_VERSION/java/templates.jar,JDBC_CONNECTOR_CLOUD_STORAGE_PATH" ` --subnet="SUBNET" ` --kms-key="KMS_KEY" ` --service-account="SERVICE_ACCOUNT" ` --properties="PROPERTY=PROPERTY_VALUE" ` --labels="LABEL=LABEL_VALUE" ` -- --template=GCSTOJDBC ` --templateProperty project.id="PROJECT_ID" ` --templateProperty log.level="LOG_LEVEL" ` --templateProperty gcs.jdbc.input.location="CLOUD_STORAGE_PATH" ` --templateProperty gcs.jdbc.input.format="FORMAT" ` --templateProperty gcs.jdbc.output.saveMode="MODE" ` --templateProperty gcs.jdbc.output.url="JDBC_CONNECTION_URL" ` --templateProperty gcs.jdbc.output.table="JDBC_TABLE" ` --templateProperty gcs.jdbc.output.driver="DRIVER" ` --templateProperty gcs.jdbc.spark.partitions="NUM_PARTITIONS" ` --templateProperty gcs.jdbc.output.batchInsertSize="BATCH_SIZE"
Windows(cmd.exe)
gcloud dataproc batches submit spark ^ --class=com.google.cloud.dataproc.templates.main.DataProcTemplate ^ --project="PROJECT_ID" ^ --region="REGION" ^ --version="1.2" ^ --jars="gs://templates-binaries/TEMPLATE_VERSION/java/templates.jar,JDBC_CONNECTOR_CLOUD_STORAGE_PATH" ^ --subnet="SUBNET" ^ --kms-key="KMS_KEY" ^ --service-account="SERVICE_ACCOUNT" ^ --properties="PROPERTY=PROPERTY_VALUE" ^ --labels="LABEL=LABEL_VALUE" ^ -- --template=GCSTOJDBC ^ --templateProperty project.id="PROJECT_ID" ^ --templateProperty log.level="LOG_LEVEL" ^ --templateProperty gcs.jdbc.input.location="CLOUD_STORAGE_PATH" ^ --templateProperty gcs.jdbc.input.format="FORMAT" ^ --templateProperty gcs.jdbc.output.saveMode="MODE" ^ --templateProperty gcs.jdbc.output.url="JDBC_CONNECTION_URL" ^ --templateProperty gcs.jdbc.output.table="JDBC_TABLE" ^ --templateProperty gcs.jdbc.output.driver="DRIVER" ^ --templateProperty gcs.jdbc.spark.partitions="NUM_PARTITIONS" ^ --templateProperty gcs.jdbc.output.batchInsertSize="BATCH_SIZE"
REST
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 必須。IAM 設定に載っている プロジェクト ID。 Google Cloud
- REGION: 必須。Compute Engine のリージョン。
- SUBNET: 省略可。サブネットが指定されていない場合、
defaultネットワークの指定された REGION のサブネットが選択されます。例:
projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME - JDBC_CONNECTOR_CLOUD_STORAGE_PATH: 必須。JDBC コネクタ jar が格納されるファイル名を含む、Cloud Storage
の完全なパス。次のコマンドを使用して、Cloud Storage にアップロードする JDBC コネクタをダウンロードできます。
- MySQL:
wget http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.30.tar.gz - Postgres SQL:
wget https://jdbc.postgresql.org/download/postgresql-42.2.6.jar - MS SQL Server:
wget https://repo1.maven.org/maven2/com/microsoft/sqlserver/mssql-jdbc/6.4.0.jre8/mssql-jdbc-6.4.0.jre8.jar - Oracle:
wget https://repo1.maven.org/maven2/com/oracle/database/jdbc/ojdbc8/21.7.0.0/ojdbc8-21.7.0.0.jar
- MySQL:
- CLOUD_STORAGE_PATH: 必須。入力ファイルが格納される Cloud Storage パス。
例:
gs://templates/cloud_storage_to_jdbc_input - FORMAT: 必須。出力データ形式。選択肢:
avro、parquet、csv、orc。デフォルト:avro注: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。デフォルト:ErrorIfExists - 必要となる JDBC_CONNECTION_URL の作成に次の変数が使用されます。
- JDBC_HOST
- JDBC_PORT
- JDBC_DATABASE、または Oracle の場合は JDBC_SERVICE
- JDBC_USERNAME
- JDBC_PASSWORD
次のいずれかのコネクタ固有の形式を使用して JDBC_CONNECTION_URL を作成します。
- MySQL:
jdbc:mysql://JDBC_HOST:JDBC_PORT/JDBC_DATABASE?user=JDBC_USERNAME&password=JDBC_PASSWORD - Postgres SQL:
jdbc:postgresql://JDBC_HOST:JDBC_PORT/JDBC_DATABASE?user=JDBC_USERNAME&password=JDBC_PASSWORD - MS SQL Server:
jdbc:sqlserver://JDBC_HOST:JDBC_PORT;databaseName=JDBC_DATABASE;user=JDBC_USERNAME;password=JDBC_PASSWORD - Oracle:
jdbc:oracle:thin:@//JDBC_HOST:JDBC_PORT/JDBC_SERVICE?user=JDBC_USERNAME&password=
- JDBC_TABLE: 必須。出力が書き込まれるテーブル名。
- DRIVER: 必須。接続に使用される JDBC ドライバ:
- MySQL:
com.mysql.cj.jdbc.Driver - Postgres SQL:
org.postgresql.Driver - MS SQL Server:
com.microsoft.sqlserver.jdbc.SQLServerDriver - Oracle:
oracle.jdbc.driver.OracleDriver
- MySQL:
- TEMPLATE_VERSION: 必須。最新のテンプレート バージョンまたは特定バージョンの日付(
2023-03-17_v0.1.0-betaなど)にはlatestを指定します(gs://templates-binaries にアクセスするか、gcloud storage ls gs://templates-binariesを実行して、使用可能なテンプレート バージョンを一覧表示します)。 - LOG_LEVEL: 省略可。ロギングのレベル。
ALL、DEBUG、ERROR、FATAL、INFO、OFF、TRACE、WARNのいずれかです。デフォルト:INFO - NUM_PARTITIONS: 省略可。テーブルの書き込みの並列処理に使用できるパーティションの最大数。指定すると、この値が JDBC の出力接続に使用されます。デフォルトは、Spark
read()によって設定された初期パーティションです。 - BATCH_SIZE: 省略可。ラウンド トリップごとに挿入するレコードの数。デフォルト:
1000。 - SERVICE_ACCOUNT: 省略可。指定されていない場合は、デフォルトの Compute Engine サービス アカウントが使用されます。
- PROPERTY、PROPERTY_VALUE: 省略可。Spark プロパティ=
valueペアのカンマ区切りのリスト。 - LABEL、LABEL_VALUE: 省略可。
label=valueペアのカンマ区切りのリスト。 -
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=GCSTOJDBC",
"--templateProperty","project.id=PROJECT_ID",
"--templateProperty","log.level=LOG_LEVEL",
"--templateProperty","gcs.jdbc.input.location=CLOUD_STORAGE_PATH",
"--templateProperty","gcs.jdbc.input.format=FORMAT",
"--templateProperty","gcs.jdbc.output.saveMode=MODE",
"--templateProperty","gcs.jdbc.output.url=JDBC_CONNECTION_URL",
"--templateProperty","gcs.jdbc.output.table=JDBC_TABLE",
"--templateProperty","gcs.jdbc.output.driver=DRIVER",
"--templateProperty","gcs.jdbc.spark.partitions=NUM_PARTITIONS",
"--templateProperty","gcs.jdbc.output.batchInsertSize=BATCH_SIZE"
],
"jarFileUris": [
"gs://templates-binaries/TEMPLATE_VERSION/java/templates.jar", "JDBC_CONNECTOR_CLOUD_STORAGE_PATH"
]
}
}
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような 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"
}
}