SDK

最終更新日: Dec 04, 2017

Mavenを使用するユーザはMaven Warehouseから ‘odps-sdk’を検索して、異なるバージョンのJava SDKを取得できます:

パッケージ名 説明
odps-sdk-core MaxComputeの基本機能のコア・インターフェースで、検索に使用するキーワードは “odps-sdk-core”です。
odps-sdk-commons いくつかのUtilパッケージでは、検索に使用されるキーワードは “odps-sdk-commons”です。
odps-sdk-udf UDFのメイン・インターフェースで、検索に使用されるキーワードは “odps-sdk-udf”です。
odps-sdk-mapred MapReduce Java SDKでは、検索に使用されるキーワードは “odps-sdk-mapred”です。
odps-sdk-graph グラフJava SDKでは、検索に使用されるキーワードは “odps-sdk-graph”です。

AlibabaAccount

Alibaba認証アカウントであり、対応する入力パラメータはAlibabaユーザの識別子及び認証キーであるaccessId及びaccessKeyである。このクラスは、MaxComputeの初期化に使用されます。

MaxCompute

これはMaxCompute SDKのエントリです。ユーザーは、プロジェクト、テーブル、リソース、関数、インスタンスなどのエンドポイントによって、プロジェクトシェル下のすべてのオブジェクトのセットを取得できます。ユーザーはAlibabaAccountインスタンスを導入してMaxComputeオブジェクトを構築することができます。プログラムの例は次のとおりです。

これはMaxCompute SDKのエントリです。ユーザーはプロジェクトテーブルリソース機能インスタンスを指定します。

ユーザーはAlibabaAccountインスタンスを入力してMaxComputeオブジェクトを構築できます。プログラムの例を以下に示します。

  1. Account account = new AliyunAccount("my_access_id", "my_access_key");
  2. Odps odps = new Odps(account);
  3. String odpsUrl = "<your odps endpoint>";
  4. odps.setEndpoint(odpsUrl);
  5. odps.setDefaultProject("my_project");
  6. for (Table t : odps.tables()) {
  7. ....
  8. }

Projects

これはMaxComputeのすべてのプロジェクトのセットです。この集合の要素は Projectです。プログラムの例を以下に示します。

  1. Account account = new AliyunAccount("my_access_id", "my_access_key");
  2. Odps odps = new Odps(account);
  3. String odpsUrl = "<your odps endpoint>";
  4. odps.setEndpoint(odpsUrl);
  5. Project p = odps.projects().get("my_exists");
  6. p.reload();
  7. Map<String, String> properties = prj.getProperties();
  8. ...

project

それはプロジェクトの記述を指し、それに対応するプロジェクトは projectsから得ることができます。

Tables

このクラスは、MaxComputeのすべてのテーブルのセットを参照します。この集合の要素は Tableです。コード例を次に示します。

  1. Account account = new AliyunAccount("my_access_id", "my_access_key");
  2. Odps odps = new Odps(account);
  3. String odpsUrl = "<your odps endpoint>";
  4. odps.setEndpoint(odpsUrl);
  5. odps.setDefaultProject("my_project");
  6. for (Table t : odps.tables()) {
  7. ....
  8. }

Table

それはテーブルの記述を参照し、対応するテーブルは Tablesを介して取得できます。コード例を次に示します。

  1. Account account = new AliyunAccount("my_access_id", "my_access_key");
  2. Odps odps = new Odps(account);
  3. String odpsUrl = "<your odps endpoint>";
  4. odps.setEndpoint(odpsUrl);
  5. Table t = odps.tables().get("table name");
  6. t.reload();
  7. Partition part = t.getPartition(new PartitionSpec(tableSpec[1]));
  8. part.reload();
  9. ...

SQLTask

これは、SQLタスクを実行して処理するためのインタフェースを指します。SQLは、インタフェース ‘run’を介して直接実行できます。インタフェース ‘run’は Instanceを返します。SQLの実行状態と結果は、「Instance」を介して取得できます。プログラムの例は次のようになります(参考のため)。

  1. Account account = new AliyunAccount("my_access_id", "my_access_key");
  2. Odps odps = new Odps(account);
  3. String odpsUrl = "<your odps endpoint>";
  4. odps.setEndpoint(odpsUrl);
  5. Instance instance = SQLTask.run(odps, "my_project", "select ...");
  6. String id = instance.getId();
  7. instance.waitforsuccess();
  8. Set<String> taskNames = instance.getTaskNames();
  9. for (String name : taskNames) {
  10. TaskSummary summary = instance.getTaskSummary(name);
  11. String s = summary.getSummaryText();
  12. }
  13. Map<String, String> results = instance.getTaskResults();
  14. Map<String, TaskStatus> taskStatus = instance.getTaskStatus();
  15. for (Entry<String, TaskStatus> status : taskStatus.entrySet()) {
  16. String result = results.get(status.getKey());
  17. }

注意:

  • テーブルを作成する必要がある場合は、インタフェース 'テーブル'の代わりにSQLTaskインタフェースを使用する必要があります。CREATE TABLEのステートメントをSQLTaskに導入する必要があります。

Instances

このクラスは、MaxCompute内のすべてのインスタンスのセットを参照し、このセットの要素は Instanceです。プログラムの例を以下に示します。

  1. Account account = new AliyunAccount("my_access_id", "my_access_key");
  2. Odps odps = new Odps(account);
  3. String odpsUrl = "<your odps endpoint>";
  4. odps.setEndpoint(odpsUrl);
  5. odps.setDefaultProject("my_project");
  6. for (Instance i : odps.instances()) {
  7. ....
  8. }

Instance

これはインスタンスの記述を参照し、対応するインスタンスはInstancesから取得できます。コード例を次に示します。

  1. Account account = new AliyunAccount("my_access_id", "my_access_key");
  2. Odps odps = new Odps(account);
  3. String odpsUrl = "<your odps endpoint>";
  4. odps.setEndpoint(odpsUrl);
  5. Instance ins = odps.instances().get("instance id");
  6. Date startTime = instance.getStartTime();
  7. Date endTime = instance.getEndTime();
  8. ...
  9. Status instanceStatus = instance.getStatus();
  10. String instanceStatusStr = null;
  11. if (instanceStatus == Status.TERMINATED) {
  12. instanceStatusStr = TaskStatus.Status.SUCCESS.toString();
  13. Map<String, TaskStatus> taskStatus = instance.getTaskStatus();
  14. for (Entry<String, TaskStatus> status : taskStatus.entrySet()) {
  15. if (status.getValue().getStatus() != TaskStatus.Status.SUCCESS) {
  16. instanceStatusStr = status.getValue().getStatus().toString();
  17. break;
  18. }
  19. }
  20. } else {
  21. instanceStatusStr = instanceStatus.toString();
  22. }
  23. ...
  24. TaskSummary summary = instance.getTaskSummary("instance name");
  25. String s = summary.getSummaryText();

Resources

クラスは、MaxCompute内のすべてのリソースのセットを参照します。この集合の要素は Resourceです。コード例を次に示します。

  1. Account account = new AliyunAccount("my_access_id", "my_access_key");
  2. Odps odps = new Odps(account);
  3. String odpsUrl = "<your odps endpoint>";
  4. odps.setEndpoint(odpsUrl);
  5. odps.setDefaultProject("my_project");
  6. for (Resource r : odps.resources()) {
  7. ....
  8. }

Resource

それはリソースの記述を参照し、対応するリソースは Resourcesを通して得ることができます。コード例を次に示します。

  1. Account account = new AliyunAccount("my_access_id", "my_access_key");
  2. Odps odps = new Odps(account);
  3. String odpsUrl = "<your odps endpoint>";
  4. odps.setEndpoint(odpsUrl);
  5. Resource r = odps.resources().get("resource name");
  6. r.reload();
  7. if (r.getType() == Resource.Type.TABLE) {
  8. TableResource tr = new TableResource(r);
  9. String tableSource = tr.getSourceTable().getProject() + "."
  10. + tr.getSourceTable().getName();
  11. if (tr.getSourceTablePartition() != null) {
  12. tableSource += " partition(" + tr.getSourceTablePartition().toString()
  13. + ")";
  14. }
  15. ....
  16. }

ファイルリソースを作成する例:

  1. String projectName = "my_porject";
  2. String source = "my_local_file.txt";
  3. File file = new File(source);
  4. InputStream is = new FileInputStream(file);
  5. FileResource resource = new FileResource();
  6. String name = file.getName();
  7. resource.setName(name);
  8. odps.resources().create(projectName, resource, is);

テーブルリソースを作成する例:

  1. TableResource resource = new TableResource(tableName, tablePrj, partitionSpec);
  2. //resource.setName(INVALID_USER_TABLE);
  3. resource.setName("table_resource_name");
  4. odps.resources().update(projectName, resource);

Functions

このクラスは、MaxComputeのすべての関数のセットを参照します。この集合の要素は Functionです。コード例を次に示します。

  1. Account account = new AliyunAccount("my_access_id", "my_access_key");
  2. Odps odps = new Odps(account);
  3. String odpsUrl = "<your odps endpoint>";
  4. odps.setEndpoint(odpsUrl);
  5. odps.setDefaultProject("my_project");
  6. for (Function f : odps.functions()) {
  7. ....
  8. }

Function

それは関数の記述を参照し、対応する関数は Functionsを介して得ることができます。コード例を次に示します。

  1. Account account = new AliyunAccount("my_access_id", "my_access_key");
  2. Odps odps = new Odps(account);
  3. String odpsUrl = "<your odps endpoint>";
  4. odps.setEndpoint(odpsUrl);
  5. Function f = odps.functions().get("function name");
  6. List<Resource> resources = f.getResources();

関数を作成する例:

  1. String resources = "xxx:xxx";
  2. String classType = "com.aliyun.odps.mapred.open.example.WordCount";
  3. ArrayList<String> resourceList = new ArrayList<String>();
  4. for (String r : resources.split(":")) {
  5. resourceList.add(r);
  6. }
  7. Function func = new Function();
  8. func.setName(name);
  9. func.setClassType(classType);
  10. func.setResources(resourceList);
  11. odps.functions().create(projectName, func);