Dataplex Universal Catalog は、データの取り込み、処理、データ ライフサイクルの管理などの一般的なデータ処理タスクを実行するための(Dataflow が供給する)テンプレートを提供します。このガイドでは、JDBC 接続を使用してデータを取り込むテンプレートを構成して実行する方法について説明します。
始める前に
Dataplex Universal Catalog タスク テンプレートは、Dataflow によって提供されます。テンプレートを使用する前に、Dataflow API を有効にします。
テンプレート: JDBC 接続を使用して Dataplex Universal Catalog にデータを取り込む
Dataplex Universal Catalog JDBC 取り込みテンプレートは、リレーショナル データベースから Dataplex Universal Catalog アセット ターゲットにデータをコピーします。Dataplex Universal Catalog アセットは、Cloud Storage アセットまたは BigQuery アセットにすることができます。
このパイプラインは、JDBC を使用してリレーショナル データベースに接続します。保護をさらに強化するために、Cloud KMS 鍵で暗号化された Base64 でエンコードされたユーザー名、パスワード、接続文字列パラメータを渡すこともできます。
テンプレートは、さまざまなアセットタイプを透過的に処理します。Cloud Storage アセットに格納されたデータは、Hive スタイルのパーティション分割であり、Dataplex Universal Catalog 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 Universal Catalog 出力アセット ID。ID には projects/your-project/locations/<loc>/lakes/<lake-name>/zones/<zone-name>/assets/<asset-name></code> の形式を使用します。outputAsset は、 Google Cloud コンソールの Dataplex Universal Catalog アセットの [詳細] タブで確認できます。 |
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 Universal Catalog メタデータを更新するかどうか。このパラメータのデフォルト値は 有効にすると、パイプラインによりスキーマがソースからコピー先の Dataplex Universal Catalog エンティティに自動的にコピーされ、自動化された Dataplex Universal Catalog Discovery は Dataplex エンティティに対して実行されません。このフラグは、ソースでスキーマを管理している場合に使用します。 Cloud Storage の宛先でのみサポートされます。 |
テンプレートを実行する
コンソール
Google Cloud コンソールで、[Dataplex Universal Catalog] ページに移動します。
[プロセス] ビューに移動します。
[タスクを作成] をクリックします。
[JDBC を Dataplex に取り込む] で、[タスクの作成] をクリックします。
Dataplex Universal Catalog レイクを選択します。
タスク名を指定します。
タスクの実行に使用するリージョンを選択します。
必要なパラメータを入力します。
[続行] をクリックします。
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 Universal Catalog 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 Universal Catalog output asset ID