テンプレートを使用して取り込む

Dataplex は、データの取り込み、処理、データ ライフサイクルの管理などの一般的なデータ処理タスクを実行するための(Dataflow が供給する)テンプレートを提供します。このガイドでは、JDBC 接続を使用してデータを取り込むテンプレートを構成して実行する方法について説明します。

始める前に

Dataplex のタスク テンプレートは、Dataflow によって供給されます。 テンプレートを使用する前に、Dataflow API を有効にします。

Dataflow API を有効にする

テンプレート: JDBC 接続を使用して Dataplex にデータを取り込む

Dataplex JDBC 取り込みテンプレートは、リレーショナル データベースから Dataplex アセット ターゲットにデータをコピーします。Dataplex アセットは、Cloud Storage アセットまたは BigQuery アセットとなることができます。

このパイプラインは、JDBC を使用してリレーショナル データベースに接続します。保護をさらに強化するために、Cloud KMS 鍵で暗号化された Base64 でエンコードされたユーザー名、パスワード、接続文字列パラメータを渡すこともできます。

テンプレートは、さまざまなアセットタイプを透過的に処理します。Cloud Storage アセットに格納されたデータは、Hive スタイルのパーティション分割であり、Dataplex Discovery により、Data Catalog、BigQuery(外部テーブル)のテーブルまたはアタッチされた Dataproc Metastore インスタンスとして自動的に利用可能になります。

テンプレートのパラメータ

パラメータ 説明
driverJars カンマを使用して、JDBC ドライバ用に Cloud Storage パスを分割します。
次に例を示します。gs://your-bucket/driver_jar1.jargs://your-bucket/driver_jar2.jar.
connectionURL JDBC ソースに接続する URL 接続文字列。
次に例を示します。jdbc:mysql://some-host:3306/sampledb
接続 URL は、書式なしテキストとして、または Cloud KMS によって暗号化された Base64 エンコード文字列として渡すことができます。
driverClassName JDBC ドライバのクラス名。
例: com.mysql.jdbc.Driver
connectionProperties JDBC 接続に使用するプロパティ文字列。
例: unicode=true&characterEncoding=UTF-8
query ソースで実行されるクエリでデータを抽出します。
例: select * from sampledb.sample_table
outputAsset 結果が保存される Dataplex 出力アセット ID。ID には、projects/your-project/locations/<loc>/lakes/<lake-name>/zones/<zone-name>/assets/<asset-name></code> の形式を使用します。outputAsset は、 Google Cloud コンソールで、Dataplex アセットの [詳細] タブで確認できます。
username JDBC 接続に使用するユーザー名。ユーザー名は、書式なしテキストとして、または Cloud KMS によって暗号化された Base64 エンコード文字列として渡すことができます。
password JDBC 接続に使用するパスワード。パスワードは、書式なしテキストとして、または Cloud KMS によって暗号化された Base64 エンコード文字列として渡すことができます。
outputTable 出力を書き込む BigQuery テーブルのロケーションまたは Cloud Storage の最上位フォルダ名。BigQuery テーブルのロケーションの場合、テーブルのスキーマはソースクエリ スキーマと一致している必要があり、some-project-id:somedataset.sometable の形式であるべきです。Cloud Storage の最上位のフォルダの場合は、最上位のフォルダ名を指定します。
KMSEncryptionKey 省略可: KMSEncryptionKey パラメータを指定する場合は、passwordusernameconnectionURL が Cloud KMS によって暗号化されていることを確認してください。Cloud KMS API 暗号化エンドポイントを使用してこれらのパラメータを暗号化します。次に例を示します。projects/your-project/locations/global/keyRings/test/cryptoKeys/quickstart
writeDisposition 省略可: ターゲット ファイル/テーブルが存在する場合に使用する戦略。サポートされている形式は、WRITE_APPEND(テーブルが存在する場合は行が追加されます)、WRITE_TRUNCATE(テーブル / ファイルが上書きされます)、WRITE_EMPTY(出力テーブルは空である必要があります / 出力ファイルは存在してはなりません)、SKIP(存在する場合はファイルへの書き込みをスキップします)です。BigQuery では、WRITE_APPEND WRITE_TRUNCATEWRITE_EMPTY の形式を使用できます。Cloud Storage の場合、使用できる形式は SKIPWRITE_TRUNCATEWRITE_EMPTY です。デフォルト: WRITE_EMPTY
partitioningScheme 省略可: ファイル書き込み時のパーティション スキーム。このパラメータのデフォルト値は DAILY です。パラメータの他の値は MONTHLY または HOURLY となりえます。
partitionColumn 省略可: パーティションのベースとなるパーティション列。列の種類は timestamp/date 形式にする必要があります。partitionColumn パラメータが指定されていない場合、データはパーティション分割されません。
fileFormat 省略可: Cloud Storage の出力ファイル形式。ファイルは、デフォルトの設定である Snappy 圧縮で圧縮されます。このパラメータのデフォルト値は PARQUET です。パラメータの別の値は AVRO です。
updateDataplexMetadata

省略可: 新しく作成されたエンティティの Dataplex メタデータを更新するかどうか。このパラメータのデフォルト値は false です。

有効にすると、パイプラインはスキーマをソースからコピー先の Dataplex エンティティに自動的にコピーし、自動化された Dataplex Discovery はそれらのために実行されません。このフラグは、ソースでスキーマを管理している場合に使用します。

Cloud Storage の宛先でのみサポートされます。

テンプレートを実行する

コンソール

  1. Google Cloud コンソールで、Dataplex ページに移動します。

    Dataplex に移動

  2. [プロセス] ビューに移動します。

  3. [タスクの作成] をクリックします。

  4. [JDBC を Dataplex に取り込む] で、[タスクの作成] をクリックします。

  5. Dataplex レイクを選択します。

  6. タスク名を指定します。

  7. タスクの実行に使用するリージョンを選択します。

  8. 必要なパラメータを入力します。

  9. [続行] をクリックします。

gcloud

シェルまたはターミナルで、次のテンプレートを実行します。

gcloud beta dataflow flex-template run JOB_NAME \
--project=PROJECT_ID \
--region=REGION_NAME \
--template-file-gcs-location=gs://dataflow-templates-REGION_NAME/latest/flex/Dataplex_JDBC_Ingestion_Preview \
--parameters \
driverJars=DRIVER_JARS,\
connectionUrl=CONNECTION_URL,\
driverClassName=DRIVER_CLASS_NAME,\
connectionProperties=CONNECTION_PROPERTIES,\
query=QUERY\
outputAsset=OUTPUT_ASSET\

次のように置き換えます。

JOB_NAME: a job name of your choice
PROJECT_ID: your template project ID
DRIVER_JARS: path to your JDBC drivers
CONNECTION_URL: your JDBC connection URL string
DRIVER_CLASS_NAME: your JDBC driver class name
CONNECTION_PROPERTIES: your JDBC connection property string
QUERY: your JDBC source SQL query
OUTPUT_ASSET: your Dataplex output asset ID

REST API

HTTP POST リクエストの送信:

POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/REGION_NAME/flexTemplates:launch
{
   "launch_parameter": {
      "jobName": "JOB_NAME",
      "parameters": {
          "driverJars": "DRIVER_JARS",
          "connectionUrl": "CONNECTION_URL",
          "driverClassName": "DRIVER_CLASS_NAME",
          "connectionProperties": "CONNECTION_PROPERTIES",
          "query": "QUERY"
          "outputAsset": "OUTPUT_ASSET"
      },
      "containerSpecGcsPath": "gs://dataflow-templates-REGION_NAME/latest/flex/Dataplex_JDBC_Ingestion_Preview",
   }
}

次のように置き換えます。

PROJECT_ID: your template project ID
REGION_NAME: region in which to run the job
JOB_NAME: a job name of your choice
DRIVER_JARS: path to your JDBC drivers
CONNECTION_URL: your JDBC connection URL string
DRIVER_CLASS_NAME: your JDBC driver class name
CONNECTION_PROPERTIES: your JDBC connection property string
QUERY: your JDBC source SQL query
OUTPUT_ASSET: your Dataplex output asset ID

次のステップ