テンプレートを使用した取り込み

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

以下を置き換えます。

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

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

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\

REST API

以下を置き換えます。

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

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",
   }
}

次のステップ