ここでは SSSP アルゴリズムを例に挙げ、Graph ジョブの送信方法を紹介します。
Graph ジョブの送信は、MapReduce を使用してジョブを送信する方法と似ています。 Maven ユーザーは、Maven ライブラリ で
odps-sdk-graph
を検索して、Java SDK を入手できます。<dependency>
<groupId>com.aliyun.odps</groupId>
<artifactId>odps-sdk-graph</artifactId>
<version>0.20.7</version>
</dependency>
手順
- コンソールを起動して、odpscmd を実行します。
- 入力テーブルと出力テーブルを作成します。
create table sssp_in (v bigint, es string); create table sssp_out (v bigint, l bigint);
テーブルを作成する文の詳細は、「テーブルの操作 (Table Operations)」をご参照ください。
- データをアップロードします。
ローカルデータの内容は、次の通りです。
2, 2, 3, 4, 4 2 1:2,3:2,4:1 3 1:1,2:2,5:1 4 1:4,2:1,5:1 5 3:1,4:1
2 つの列を分割するには、Tab ボタンを使用します。tunnel u -fd " " sssp.txt sssp_in;
- SSSP の例を記述します。
「Graph Eclipse プラグイン (Graph Eclipse Plug-in) 」の説明に従い、SSSP の例をローカルでコンパイルおよびデバックします。 この例では、コードを odps-graph-example-sssp.jar という名前でパッケージ化します。注 SSSP コードのみをパッケージ化する必要があります。 odpsgraph-example-sssp.jar の SDK をパッケージ化する必要はありません。
- Jar パッケージを追加します。
add jar $LOCAL_JAR_PATH/odps-graph-example-sssp.jar
注 リソースの作成については、「リソースの操作 (Resource Operation)」をご参照ください。 - SSSP を実行します。
jar -libjars odps-graph-example-sssp.jar -classpath $LOCAL_JAR_PATH/odps-graph-example-sssp.jar com.aliyun.odps.graph.example.SSSP 1 sssp_in sssp_out;
MaxCompute Graph ジョブの実行には、Jarコマンドを使用します。MapReduce ジョブを実行するコマンドと同じ要領です。
Graph ジョブの実行中、対応するインスタンス ID、実行スケジュール、および結果の概要がコマンドライン次にように出力されます。
出力ID = 20130730160742915gl205u3 2013-07-31 00:18:36 SUCCESS Summary: Graph Input/Output Total input bytes=211 Total input records = 5 Total output bytes=161 Total output records=5 Graph_input _ [BSP. sssp_in] _ bytes = 211 Graph_input _ [BSP. sssp_in] _ records = 5 graph_output_[bsp.sssp_out]_bytes=161 Graph_output _ [BSP. sssp_out] _ records = 5 Graph statistics Total edges=14 Total halted vertices=5 Total sent messages=28 Total supersteps=4 Total vertices=5 Total workers=1 Graph timers Average superstep time (milliseconds) = 7 Load time (milliseconds)=8 Max superstep time (milliseconds) =14 Max time superstep=0 Min superstep time (milliseconds) = 5 Min time superstep=2 Setup Time (milliseconds) = 277 Shutdown Time (milliseconds) = 20 Total superb time (milliseconds) = 30 Total time (milliseconds)=344 OK
注 Graph 関数を使用する必要がある場合は、Graph 計算ジョブの実行を申請してください。