このトピックでは、Graphジョブを記述する方法について説明します。 このトピックでは、シングルソース最短パス (SSSP) アルゴリズムを例として使用します。
前提条件
MaxComputeクライアントがインストールされ、設定され、MaxComputeインスタンスに接続されます。 詳細については、「MaxComputeクライアント (odpscmd) 」をご参照ください。
IDEA 2024開発ツールを準備し、MaxCompute Studioをインストールして設定します (MaxCompute Studioのバージョン更新時間は2024以内である必要があります) 。 MaxCompute Studioのインストールおよび設定方法の詳細については、「MaxCompute Studioのインストール」および「MaxCompute Studioの設定」をご参照ください。
Mavenの
apache-maven-3.5 0が設定されています。Java Development Kit (JDK) 1.8以降がインストールされています。
データファイルが準備される。 この例では、sssp.txtファイルが使用されます。 sssp.txtファイルには次のデータが含まれています。
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
手順
MaxComputeクライアントを実行し、次のステートメントを実行して、sssp_inという名前の入力テーブルとsssp_outという名前の出力テーブルを作成します。
CREATE TABLE sssp_in (v bigint, es string); CREATE TABLE sssp_out (vertex bigint, value bigint);Tunnelコマンドを実行して、sssp.txtファイルのデータをsssp_inテーブルにアップロードします。 異なる列のデータをスペースで区切ります。
tunnel u -fd " " sssp.txt sssp_in;説明この例では、sssp.txtファイルはMaxComputeクライアントの
binディレクトリに保存されています。 sssp.txtファイルが格納されている実際のディレクトリに注意してください。SSSPコードを記述します。
IntelliJ IDEAでodps-graph-example-ssspという名前のMaxCompute Javaモジュールを作成します。
説明MaxCompute Javaモジュールを作成します。 詳細については、「MaxCompute Javaモジュールの作成」をご参照ください。
odps-graph-example-SSSPに
BaseLoadingVertexResolverクラスとssspクラスを作成します。 クラスの作成方法の詳細については、SSSPで提供されている有向グラフのサンプルコードを参照してください。 次のコードは、pom.xmlファイルの設定コードです。<dependency> <groupId>com.aliyun.odps</groupId> <artifactId>odps-sdk-core</artifactId> <version>0.48.0-public</version> </dependency> <dependency> <groupId>com.aliyun.odps</groupId> <artifactId>odps-sdk-graph</artifactId> <version>0.48.0-public</version> </dependency> <!-- used for local test --> <dependency> <groupId>com.aliyun.odps</groupId> <artifactId>odps-graph-local</artifactId> <version>0.48.0-public</version> </dependency>IntelliJ IDEAで、MaxCompute Studioを使用してJavaプログラムをJARファイルにパッケージ化します。 JavaプログラムをJARファイルにパッケージ化する方法の詳細については、「Javaプログラムのパッケージ化、パッケージのアップロード、MaxCompute UDFの作成」をご参照ください。
説明この例では、MaxComputeプロジェクトにデプロイされているJARパッケージの名前はodps-graph-example-sssp.jarです。
MaxComputeクライアントで次のコマンドを実行し、SSSPアルゴリズムを使用します。
jar -libjars odps-graph-example-sssp.jar -classpath <LOCAL_JAR_PATH>/odps-graph-example-sssp.jar SSSP 1 sssp_in sssp_out;LOCAL_JAR_PATH: odps-graph-example-sssp.jarパッケージのローカルパスを示します。
上記のコマンドを実行した後、
select * from sssp_out;を実行してsssp_outテーブルを照会し、実行結果を確認します。vertex value 1 0 2 2 3 1 4 3 5 2vertex: 現在の頂点を示します。
value: 現在の頂点からソース頂点1までのSSSPの値を示します。
説明グラフ機能を使用する場合は、グラフジョブを直接送信できます。