Halaman ini menjawab pertanyaan umum mengenai MaxCompute SDK untuk Java.
Bagaimana cara mengunduh paket MaxCompute SDK untuk Java?
Unduh paket SDK dari Maven. Misalnya, untuk mendapatkan MapReduce SDK untuk Java, cari odps-sdk-mapred di Maven Central, buka tab Versions, lalu klik ikon unduh di samping versi yang Anda inginkan.
Untuk daftar lengkap paket yang tersedia, lihat SDK untuk Java.
Bagaimana cara mengatur flag SQL menggunakan MaxCompute SDK untuk Java?
Mengatur flag di Konsol DataWorks atau client MaxCompute (odpscmd)—misalnya, menambahkan set odps.sql.type.system.odps2=true; sebelum pernyataan—tidak berlaku saat mengirimkan SQL melalui SDK. Gunakan SQLTask.setProperty() sebagai gantinya:
// Buat objek SQLTask
SQLTask task = new SQLTask();
task.setName("foobar");
task.setQuery("select ...");
// Bangun map flag
Map<String, String> settings = new HashMap<>();
settings.put("odps.sql.type.system.odps2", "true");
// Tambahkan flag lain sesuai kebutuhan
// Langkah kunci: serialisasi map sebagai string JSON dan atur pada task
task.setProperty("settings", new JSONObject(settings).toString());
// Kirim task
Instance instance = odps.instances().create(task);
Bagaimana cara menggunakan LogView untuk memecahkan masalah error SDK untuk Java?
Gunakan metode generateLogView dari antarmuka LogView:
Instance i = SQLTask.run(odps, sql);
String logview = odps.logview().generateLogView(i, 7 * 24);
Buka URL yang dikembalikan untuk memeriksa detail eksekusi job dan mengidentifikasi error.
Bagaimana cara menjalankan job SQL dari kode bisnis Java?
Panggil MaxCompute SDK untuk Java secara langsung dalam kode Java Anda. Untuk instruksi penyiapan dan contoh kode, lihat SDK untuk Java.
Bagaimana cara mengambil lebih dari 10.000 record dari kueri SQLTask?
SQLTask membatasi hasil hingga 10.000 record. Untuk mendapatkan seluruh dataset, tulis hasil kueri ke tabel MaxCompute, lalu unduh tabel tersebut menggunakan perintah Tunnel. Untuk informasi lebih lanjut, lihat Metode untuk mengekspor hasil SQL.
Apa batas set hasil SQLTask?
Saat Anda memanggil SQLTask.getResult(), set hasil dibatasi hingga 10.000 record:
Instance instance = SQLTask.run(odps, "SQL statement");
instance.waitForSuccess();
List<Record> records = SQLTask.getResult(instance);
Untuk dataset yang lebih besar, gunakan Tunnel SDK untuk mengekspor data tersebut.
Apa perbedaan antara SQLTask dan DownloadSession?
| SQLTask | DownloadSession | |
|---|---|---|
| Tujuan | Menjalankan pernyataan SQL dan mengembalikan hasil | Mengunduh data dari tabel yang sudah ada |
| Batas hasil | 10.000 record secara default | Tidak ada batas atas |
Gunakan SQLTask untuk kueri ad-hoc yang hasilnya muat dalam memori. Gunakan DownloadSession saat Anda perlu mengekspor seluruh tabel atau dataset berukuran besar.
Bagaimana cara memperbaiki waktu eksekusi job yang lama saat menggunakan MaxCompute SDK untuk Java?
Ada dua penyebab umum:
Tidak mendapatkan URL LogView untuk instans
Setelah memanggil instance.waitForSuccess(), pemanggilan tersebut akan menunggu hingga job selesai. Jika job lambat, Anda tidak dapat melihat penyebabnya. Dapatkan URL LogView untuk setiap instans agar Anda dapat memeriksa job secara real-time:
Instance i = SQLTask.run(odps, sql);
String logview = odps.logview().generateLogView(i, 7 * 24);
System.out.println("LogView: " + logview);
i.waitForSuccess();
Sebagai alternatif, jalankan WAIT <instance_id> di client MaxCompute (odpscmd) untuk mendapatkan URL LogView dari instans yang sedang berjalan. Untuk detail lebih lanjut, lihat Instance LogView.
Retry RestClient gagal secara diam-diam
Jika operasi akses tabel memicu retry RestClient berulang kali, akar penyebabnya tidak terlihat kecuali Anda menangkap log retry tersebut. Implementasikan kelas abstrak RetryLogger untuk mencatat setiap upaya retry dan mengidentifikasi kegagalannya. Untuk detail implementasi, lihat Kembalikan log error.
Bagaimana cara memperbaiki java.lang.ClassNotFoundException?
Hal ini biasanya berarti ada dependensi yang hilang atau duplikat di lingkungan lokal Anda. Periksa konfigurasi proyek Anda:
-
Pastikan semua dependensi yang diperlukan telah dideklarasikan dan diselesaikan dengan benar.
-
Hapus semua impor paket yang duplikat.
Jika error terjadi saat menjalankan job MapReduce di MaxCompute, periksa apakah dependensi yang diperlukan telah disertakan menggunakan parameter -resources.
Bagaimana cara memperbaiki OpenJDK 64-Bit Server VM warning: Insufficient space for shared memory?
Direktori yang digunakan untuk menyimpan file sementara JVM kehabisan ruang. Jalankan df untuk memeriksa ruang yang tersedia di direktori tersebut, lalu bebaskan ruang yang cukup untuk melanjutkan.