すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:Java SDK のよくある質問

最終更新日:Jun 23, 2026

本記事では、Java SDK のよくある質問について説明します。

問題のカテゴリ

よくある質問

SDK に関するお問い合わせ

実行エラー

Java SDK パッケージのダウンロード方法

MaxCompute の Java SDK パッケージは Maven でホストされています。Maven を通じて Java SDK パッケージをダウンロードできます。

たとえば、MapReduce の Java SDK パッケージの場合、Maven で odps-sdk-mapred を検索し、[Versions] タブで対応する SDK バージョンの横にある image をクリックして、該当するタイプのパッケージをダウンロードします。

Java SDK パッケージの詳細については、「Java SDK の概要」をご参照ください。

MaxCompute Java SDK を使用した SQL フラグの設定方法

DataWorks コンソールまたは MaxCompute クライアント (odpscmd) を使用して SQL を送信する際、通常は SQL フラグを設定する必要があります。たとえば、MaxCompute 2.0 のデータ型を使用する必要がある場合、セッションレベルで有効にすることができます。2.0 の新しいデータ型に関連する SQL の前に Set Flag 文 set odps.sql.type.system.odps2=true; を追加します。

Java SDK を使用して SQL を送信する場合、Set Flag 文を単純に SQL に追加することはできません。フラグを設定する正しい方法は次のとおりです:

-- SQLTask オブジェクトを構築します。
SQLTask task = new SQLTask();task.setName("foobar");task.setQuery("select ...");
-- フラグを設定します。
Map settings = new HashMap<>();settings.put("odps.sql.type.system.odps2", "true");...
-- 他のフラグを設定します。
task.setProperty("settings", new JSONObject(settings).toString()); -- ここが重要です:フラグに対応する JSON 文字列を settings に設定します。
-- 実行します。
Instance instance = odps.instances().create(task);

Logview を使用した Java SDK のエラー調査

MaxCompute Java SDK は、Logview インターフェイス i = SQLTask.run(odps, sql); String logview = odps.logview().generateLogView(i, 7*24) を提供します。

MaxCompute の Java ビジネスコードでの SQL ジョブの実行方法

ビジネスコードで MaxCompute の Java SDK を呼び出して SQL ジョブを実行できます。詳細については、「Java SDK の概要」をご参照ください。

SQLTask を使用して SQL クエリを実行する際に、結果セットが 10,000 件の制限を超える場合の全データ取得方法

SQL クエリの結果セットをテーブルに書き込み、トンネル 経由ですべてのデータをダウンロードできます。

SQLTask において、特定の方法で返される結果セットのデータ量制限の有無と最大サイズ

コマンド例は次のとおりです:

Instance instance = SQLTask.run(odps, "sql文");
instance.waitForSuccess();
List<Record> records = SQLTask.getResult(instance);              

制限があります。最大で 10,000 件まで調整できます。データ量が比較的大きい場合は、Tunnel SDK を使用してデータをエクスポートすることを推奨します。

SQLTask のデータクエリと DownloadSession の使用方法および機能の違い

SQLTask は SQL を実行して結果を返しますが、返される件数には制限があり、デフォルトは 10,000 件です。

DownloadSession は既存のテーブルからデータをダウンロードし、結果の件数に制限はありません。

MaxCompute Java SDK でジョブの実行がスタックする場合の解決策

  • 問題の現象

    • ユーザー A が MaxCompute Java SDK を使用してジョブを実行するとスタックし、Logview 情報が表示されません。

    • ユーザー B が MaxCompute Java SDK を使用してテーブルにアクセスし、RestClient のリトライ操作を実行すると、ジョブがスタックします。

  • 原因

    • ユーザー A の場合、インスタンスの Logview がないため、システムはインスタンスの実行プロセスを追跡できません。インスタンスは作成後に instance.waitForSuccess() メソッドを呼び出します。ジョブの実行時間が長くなると、スタックします。このとき、Logview があれば、ジョブがスタックした具体的な原因を確認し、追跡できます。

    • ユーザー B の場合、表面的にはジョブがスタックしたように見え、何の出力もありません。Java SDK の RestClient 自体にはリトライメカニズムがあります。システムがリトライのたびにエラーログを出力すれば、問題を迅速に特定できます。

  • 解決策

    • MaxCompute Java SDK を使用して Instance Logview を生成します。

      MaxCompute Java SDK は Logview インターフェイスを提供しています。詳細については、「Instance Logview の例」をご参照ください。

      説明
      • Java SDK を使用する際は、各インスタンスの Logview を記録してください。問題が発生した場合に迅速に追跡できます。

      • MaxCompute クライアント (odpscmd) で WAIT<instance_id> コマンドを実行すると、Logview リンクを取得できます。

    • RestClient のリトライ操作を実行するたびにエラーログを出力します。

      MaxCompute Java SDK は抽象クラス RetryLogger を提供しています。詳細については、「エラーログ出力の例」をご参照ください。

MaxCompute でのコード実行時の java.lang.ClassNotFoundException エラーの解決策

このエラーは、パッケージをインポートする際に、関連する依存パッケージがインポートされていないか、またはパッケージが重複してインポートされていることが原因で発生します。ローカル環境の設定を確認してください。

MaxCompute で MapReduce ジョブを実行中にこのエラーが発生した場合、-resources パラメータで依存パッケージがインポートされているか確認してください。

MaxCompute でのコード実行時の OpenJDK 64-Bit Server VM warning エラーの解決策

  • 問題の現象

    エラーメッセージは次のとおりです:

    OpenJDK 64-Bit Server VM warning: Insufficient space for shared memory
  • 原因

    このエラーは、一時ファイルディレクトリの容量が不足していることが原因で発生します。

  • 解決策

    df コマンドを使用して、一時ファイルディレクトリの容量を確認し、クリーンアップしてください。