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 ファイルのパス。
  • neo4jConnectionSecretId: Neo4j 接続メタデータのシークレット ID。これは、GCS パス オプションの代替手段です。
  • 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://

テンプレートを実行する

コンソール

  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 接続メタデータのパス

次のステップ