Google Cloud to Neo4j テンプレート

Google Cloud to Neo4j テンプレートを使用すると、Dataflow ジョブを介してデータセットを Neo4j データベースにインポートし、Cloud Storage バケットでホストされている CSV ファイルからデータをソーシングできます。また、インポートのさまざまなステップでデータの操作や変換を行うことができます。このテンプレートは初回インポートと増分インポートの両方に使用できます。

パイプラインの要件

  • 実行中の Neo4j インスタンス
  • Cloud Storage バケット
  • インポートするデータセット(CSV ファイル形式)
  • 使用するジョブ仕様ファイル

ジョブ仕様ファイルを作成する

ジョブ仕様ファイルは、次のセクションを含む JSON オブジェクトで構成されています。

  • config: インポートの実行方法に影響を与えるグローバル フラグ。
  • sources: データソース定義(リレーショナル)。
  • targets: データ ターゲットの定義(グラフ: ノード / リレーション)。
  • actions: 読み込み前後のアクション。

詳細については、Neo4j ドキュメントのジョブ仕様ファイルを作成するをご覧ください。

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

パラメータ 説明
jobSpecUri ソース メタデータとターゲット メタデータの構成を含むジョブ仕様ファイルのパス。
neo4jConnectionUri Neo4j 接続メタデータ JSON ファイルのパス。
optionsJson 省略可: オプションの JSON。ランタイム トークンを使用します。例: {token1:value1,token2:value2}。デフォルトは空です。
readQuery 省略可: SQL クエリをオーバーライドします。デフォルトは空です。
inputFilePattern 省略可: テキスト ファイルのパターンをオーバーライドします。例: gs://your-bucket/path/*.json。デフォルトは空です。
disabledAlgorithms 省略可: 無効にするためのカンマ区切りのアルゴリズム。この値が none に設定されている場合、アルゴリズムは無効になりません。デフォルトで無効になっているアルゴリズムには脆弱性やパフォーマンスの問題が存在することが確認されています。使用する際には十分に注意してください。例: SSLv3, RC4
extraFilesToStage 省略可: ワーカーにステージングするファイルのカンマ区切りの Cloud Storage パスまたは Secret Manager シークレット。これらのファイルは、各ワーカーの /extra_files ディレクトリに保存されます。例: gs://your-bucket/file.txt,projects/project-id/secrets/secret-id/versions/version-id

テンプレートを実行する

コンソール

  1. Dataflow の [テンプレートからジョブを作成] ページに移動します。
  2. [テンプレートからジョブを作成] に移動
  3. [ジョブ名] フィールドに、固有のジョブ名を入力します。
  4. (省略可)[リージョン エンドポイント] で、プルダウン メニューから値を選択します。デフォルトのリージョンは us-central1 です。

    Dataflow ジョブを実行できるリージョンのリストについては、Dataflow のロケーションをご覧ください。

  5. [Dataflow テンプレート] プルダウン メニューから、[ the Google Cloud to Neo4j template] を選択します。
  6. 表示されたパラメータ フィールドに、パラメータ値を入力します。
  7. [ジョブを実行] をクリックします。

gcloud

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

gcloud dataflow flex-template run JOB_NAME \
    --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/Google_Cloud_to_Neo4j \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    --parameters \
       jobSpecUri=JOB_SPEC_URI,\
       neo4jConnectionUri=NEO4J_CONNECTION_URI,\

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

  • JOB_NAME: 一意の任意のジョブ名
  • VERSION: 使用するテンプレートのバージョン

    使用できる値は次のとおりです。

    • latest: 最新バージョンのテンプレートを使用します。このテンプレートは、バケット内で日付のない親フォルダ(gs://dataflow-templates-REGION_NAME/latest/)にあります。
    • バージョン名(例: 2023-09-12-00_RC00)。特定のバージョンのテンプレートを使用します。このテンプレートは、バケット内で対応する日付の親フォルダ(gs://dataflow-templates-REGION_NAME/)にあります。
  • REGION_NAME: Dataflow ジョブをデプロイするリージョン(例: us-central1
  • JOB_SPEC_URI: ジョブ仕様ファイルのパス
  • NEO4J_CONNECTION_URI: Neo4j 接続メタデータのパス

API

REST API を使用してテンプレートを実行するには、HTTP POST リクエストを送信します。API とその認証スコープの詳細については、projects.templates.launch をご覧ください。

POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch
{
   "launchParameter": {
     "jobName": "JOB_NAME",
     "parameters": {
       "jobSpecUri": "JOB_SPEC_URI",
       "neo4jConnectionUri": "NEO4J_CONNECTION_URI",
     },
     "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/Google_Cloud_to_Neo4j",
     "environment": { "maxWorkers": "10" }
  }
}

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

  • PROJECT_ID: Dataflow ジョブを実行する Google Cloud プロジェクトの ID
  • JOB_NAME: 一意の任意のジョブ名
  • VERSION: 使用するテンプレートのバージョン

    使用できる値は次のとおりです。

    • latest: 最新バージョンのテンプレートを使用します。このテンプレートは、バケット内で日付のない親フォルダ(gs://dataflow-templates-REGION_NAME/latest/)にあります。
    • バージョン名(例: 2023-09-12-00_RC00)。特定のバージョンのテンプレートを使用します。このテンプレートは、バケット内で対応する日付の親フォルダ(gs://dataflow-templates-REGION_NAME/)にあります。
  • LOCATION: Dataflow ジョブをデプロイするリージョン(例: us-central1
  • JOB_SPEC_URI: ジョブ仕様ファイルのパス
  • NEO4J_CONNECTION_URI: Neo4j 接続メタデータのパス

次のステップ