Spark SQLでDSE Graphの頂点とエッジのクエリーを行う
Spark SQLでは、DSE Graphの頂点およびエッジ・テーブルのクエリーを行うことができます。
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');
スペルは同じでも、大文字と小文字で異なるプロパティがある場合は(id
とId
など)、--conf spark.sql.caseSensitive=true
オプションを使用してSpark SQLを起動します。始める前に
GraphとSparkの両方を有効にした状態で、クラスターを起動します。
手順
-
Spark SQLシェルを起動します。
$ dse spark-sql
-
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');
-
SELECT
文を使用して、頂点とエッジのクエリーを行います。SELECT * FROM vertices where name = 'Zeus';
-
クエリー内の頂点とエッジを統合します。
頂点は、
id
カラムによって識別されます。エッジ・テーブルには、頂点の開始点と終了点をそれぞれ識別するsrc
とdst
カラムがあります。結合は、グラフを探索する際に使用できます。たとえば、外側のエッジが到達したすべての頂点IDを見つけます。SELECT edges.dst FROM vertices JOIN edges ON vertices.id = edges.src;
次のタスク
spark.sql()
を使用するSparkシェルと同じ手順が働き、クエリー文を実行するか、JDBC/ODBCドライバーとSpark SQL Thriftサーバーを使用します。