Spark OLAPジョブでのNorthwindデモ・グラフの使用

Northwindデモ・グラフ・データに対してOLAPクエリーを実行します。

DSEデモに含まれているNorthwindデモでは、架空の証券会社に関するデータのグラフを作成するためのスクリプトを取り扱っています。

このタスクでは、Gremlin Consoleを使用してNorthwindグラフを作成し、グラフの一部分のスナップショットを取得して、SparkGraphComputerを使用してサブグラフでカウント操作を実行します。

始める前に

手順

  1. graphloaderツールを使用して、Northwindグラフと補足データを読み込みます。
    graphloader -graph northwind -address localhost graph-examples/northwind/northwind-mapping.groovy  -inputpath graph-examples/northwind/data && 
    graphloader -graph northwind -address localhost graph-examples/northwind/supplemental-data-mapping.groovy -inputpath graph-examples/northwind/data/
  2. dse gremlin-consoleコマンドを使用して、Gremlin Consoleを起動します。
    dse gremlin-console
  3. デフォルトのOLTP探索ソースを使用して、Northwindグラフに探索の別名を割り当てます。
    :remote config alias g northwind.g
  4. スキーマ・モードをDevelopmentに設定します。

    接続されたグラフ・データベースのスキーマの変更を許可するには、セッションごとにモードをDevelopmentに設定する必要があります。DSE Graphのデフォルトのスキーマ・モードはProductionです。このモードの場合は、グラフのスキーマを変更できません。

    schema.config().option('graph.schema_mode').set('Development')
  5. スキャンとラムダを使用できるようにします。
    schema.config().option('graph.allow_scan').set('true')
    graph.schema().config().option('graph.traversal_sources.g.restrict_lambda').set(false)
  6. northwindグラフのスキーマを確認します。
    schema.describe()
  7. Northwind分析OLAP探索ソースaに探索の別名を割り当てます。1回限りの分析クエリーの場合は、OLAP探索ソースに別名gを割り当てます。
    :remote config alias g northwind.a
    ==>g=northwind.a
  8. OLAP探索ソースを使用して頂点の数をカウントします。
    g.V().count()
    ==>3294

    OLAP探索ソースdatabase name.aに別名gを割り当てると、DSE Analyticsはワークロード・バックエンドになります。

  9. graph.snapshot()を使用して、サブグラフをスナップショットに格納します。
    1つのセッションでグラフに対して複数のOLAPクエリーを実行する必要がある場合は、探索ソースとしてグラフのスナップショットを使用します。
    employees = graph.snapshot().vertices('employee').create()
    ==>graphtraversalsource[hadoopgraph[persistedinputrdd->persistedoutputrdd], sparkgraphcomputer]
    categories = graph.snapshot().vertices('category').create()
    
    ==>graphtraversalsource[hadoopgraph[persistedinputrdd->persistedoutputrdd], sparkgraphcomputer]

    snapshot()メソッドでは、SparkGraphComputerを使用してOLAP探索ソースを返します。

  10. スナップショット・グラフで操作を実行します。

    スナップショット・グラフで従業員の頂点の数をカウントします。

    employees.V().count()
    ==> 9

    スナップショット・グラフでカテゴリーの頂点の数をカウントします。

    categories.V().count()
    ==> 8