Dataplex は、データの取り込み、処理、データ ライフサイクルの管理などの一般的なデータ処理タスクを実行するための(Dataflow が供給する)テンプレートを提供します。このガイドでは、JDBC 接続を使用してデータを取り込むテンプレートを構成して実行する方法について説明します。
始める前に
Dataplex のタスク テンプレートは、Dataflow によって供給されます。 テンプレートを使用する前に、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.jar 、gs://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 パラメータを指定する場合は、password 、username 、connectionURL が 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_TRUNCATE 、WRITE_EMPTY です。Cloud Storage の場合、許可される形式は SKIP 、WRITE_TRUNCATE 、WRITE_EMPTY です。デフォルト: WRITE_EMPTY 。 |
partitioningScheme |
(省略可)ファイル書き込み時のパーティション スキーム。このパラメータのデフォルト値は DAILY です。パラメータの他の値は MONTHLY または HOURLY となりえます。 |
partitionColumn |
(省略可)パーティションのベースとなるパーティション列。列の種類は timestamp/date 形式にする必要があります。partitionColumn パラメータが指定されていない場合、データはパーティション分割されません。 |
fileFormat |
(省略可)Cloud Storage の出力ファイル形式。ファイルは、デフォルト設定の Snappy 圧縮で圧縮されます。このパラメータのデフォルト値は PARQUET です。パラメータの別の値は AVRO です。 |
updateDataplexMetadata |
(省略可)新しく作成されたエンティティの Dataplex メタデータを更新するかどうか。このパラメータのデフォルト値は 有効にすると、パイプラインはスキーマをソースからコピー先の Dataplex エンティティに自動的にコピーし、自動化された Dataplex Discovery はそれらのために実行されません。このフラグは、ソースでスキーマを管理している場合に使用します。 Cloud Storage の宛先でのみサポートされます。 |
テンプレートを実行する
コンソール
Google Cloud コンソールで [Dataplex] ページに移動します。
[プロセス] ビューに移動します。
[タスクの作成] をクリックします。
[JDBC を Dataplex に取り込む] で、[タスクの作成] をクリックします。
Dataplex レイクを選択します。
タスク名を指定します。
タスク実行のリージョンを選択します。
必要なパラメータを入力します。
[続行] をクリックします。
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", } }