Spark SQLでDSE Graphの頂点とエッジのクエリーを行う

Spark SQLでは、DSE Graphの頂点およびエッジ・テーブルのクエリーを行うことができます。

Spark SQLでは、DSE Graphの頂点およびエッジ・テーブルのクエリーを行うことができます。com.datastax.bdp.graph.spark.sql.vertexおよびcom.datastax.bdp.graph.spark.sql.edgeのデータ・ソースは、Spark SQLの頂点およびエッジ・テーブルの指定に使用されます。
spark-sql> CREATE DATABASE graph_example;
spark-sql> USE graph_example;
spark-sql> CREATE TABLE vertices USING com.datastax.bdp.graph.spark.sql.vertex OPTIONS (graph 'example');
spark-sql> CREATE TABLE edges USING com.datastax.bdp.graph.spark.sql.edge OPTIONS (graph 'example');
スペルは同じでも、大文字と小文字で異なるプロパティがある場合は(idIdなど)、--conf spark.sql.caseSensitive=trueオプションを使用してSpark SQLを起動します。

始める前に

GraphとSparkの両方を有効にした状態で、クラスターを起動します。

手順

  1. Spark SQLシェルを起動します。
    $ dse spark-sql
  2. CREATE TABLEを使用して、グラフの頂点およびエッジ・テーブルを登録します。
    CREATE DATABASE graph_gods;
    USE graph_gods;
    CREATE TABLE vertices USING com.datastax.bdp.graph.spark.sql.vertex OPTIONS (graph 'gods');
    CREATE TABLE edges USING com.datastax.bdp.graph.spark.sql.edge OPTIONS (graph 'gods');
  3. SELECT文を使用して、頂点とエッジのクエリーを行います。
    SELECT * FROM vertices where name = 'Zeus';
  4. クエリー内の頂点とエッジを統合します。

    頂点は、idカラムによって識別されます。エッジ・テーブルには、頂点の開始点と終了点をそれぞれ識別するsrcdstカラムがあります。結合は、グラフを探索する際に使用できます。たとえば、外側のエッジが到達したすべての頂点IDを見つけます。

    SELECT edges.dst FROM vertices JOIN edges ON vertices.id = edges.src;

次のタスク

spark.sql()を使用するSparkシェルと同じ手順が働き、クエリー文を実行するか、JDBC/ODBCドライバーとSpark SQL Thriftサーバーを使用します。