Spark OLAPジョブでのNorthwindデモ・グラフの使用
Northwindデモ・グラフ・データに対してOLAPクエリーを実行します。
DSEデモに含まれているNorthwindデモでは、架空の証券会社に関するデータのグラフを作成するためのスクリプトを取り扱っています。
このタスクでは、Gremlin Consoleを使用してNorthwindグラフを作成し、グラフの一部分のスナップショットを取得して、SparkGraphComputerを使用してサブグラフでカウント操作を実行します。
始める前に
- データ・センターで、DSE Graph、DSE Search、およびDSE Analyticsモードを有効にします。
- DSE Graph Loaderをインストールします。
- グラフ・サンプルのGitリポジトリを、Gremlin Consoleをインストールしているマシンに複製します。
$ git clone https://github.com/datastax/graph-examples.git
手順
-
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/
-
dse gremlin-consoleコマンドを使用して、Gremlin Consoleを起動します。
$ dse gremlin-console
-
デフォルトのOLTP探索ソースを使用して、Northwindグラフに探索の別名を割り当てます。
gremlin> :remote config alias g northwind.g
-
スキーマ・モードを
Development
に設定します。接続されたグラフ・データベースのスキーマの変更を許可するには、セッションごとにモードを
Development
に設定する必要があります。DSE Graphのデフォルトのスキーマ・モードはProduction
です。このモードの場合は、グラフのスキーマを変更できません。gremlin> schema.config().option('graph.schema_mode').set('Development')
-
スキャンとラムダを使用できるようにします。
gremlin> schema.config().option('graph.allow_scan').set('true') gemline> graph.schema().config().option('graph.traversal_sources.g.restrict_lambda').set(false)
-
northwind
グラフのスキーマを確認します。gremlin> schema.describe()
-
Northwind分析OLAP探索ソース
a
に探索の別名を割り当てます。1回限りの分析クエリーの場合は、OLAP探索ソースに別名g
を割り当てます。gremlin> :remote config alias g northwind.a
==>g=northwind.a
-
OLAP探索ソースを使用して頂点の数をカウントします。
gremlin> g.V().count() ==>3294
OLAP探索ソース
database name.a
に別名g
を割り当てると、DSE Analyticsはワークロード・バックエンドになります。 -
graph.snapshot()を使用して、サブグラフをスナップショットに格納します。
1つのセッションでグラフに対して複数のOLAPクエリーを実行する必要がある場合は、探索ソースとしてグラフのスナップショットを使用します。
gremlin> employees = graph.snapshot().vertices('employee').create() ==>graphtraversalsource[hadoopgraph[persistedinputrdd->persistedoutputrdd], sparkgraphcomputer]
gremlin> categories = graph.snapshot().vertices('category').create() ==>graphtraversalsource[hadoopgraph[persistedinputrdd->persistedoutputrdd], sparkgraphcomputer]
snapshot()メソッドでは、SparkGraphComputerを使用してOLAP探索ソースを返します。
-
スナップショット・グラフで操作を実行します。
スナップショット・グラフで従業員の頂点の数をカウントします。
gremlin> employees.V().count() ==> 9
スナップショット・グラフでカテゴリーの頂点の数をカウントします。
gremlin> categories.V().count() ==> 8