本文將以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>
操作步驟
- 進入console並運行odpscmd。
- 建立輸入表和輸出表 。
create table sssp_in (v bigint, es string); create table sssp_out (v bigint, l bigint);
建立表的更多語句請參見表操作。
- 上傳資料。
本機資料的內容如下:
1 2:2,3:1,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
以空格鍵做兩列的分隔字元,執行Tunnel命令上傳資料。tunnel u -fd " " sssp.txt sssp_in;
- 編寫SSSP樣本。
根據Graph開發外掛程式的介紹,本地編譯、調試SSSP演算法樣本。本樣本中假設代碼被打包為 odps-graph-example-sssp.jar。说明 僅需要將SSSP代碼打包即可,不需要同時將SDK打入 odps-graph-example-sssp.jar中。
- 添加Jar資源。
add jar $LOCAL_JAR_PATH/odps-graph-example-sssp.jar;
说明 建立資源的介紹請參見資源操作。 - 運行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;
Jar命令用於運行MaxCompute Graph作業,用法與MapReduce作業的運行命令完全一致。
Graph作業執行時命令列會列印工作執行個體ID,執行進度,結果Summary等。
輸出樣本如下所示: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 superstep time (milliseconds)=30 Total time (milliseconds)=344 OK
说明 如果您需要使用Graph功能,直接開通提交圖計算作業即可。