全部产品
Search
文档中心

MaxCompute:Solusi untuk Mengekspor Sejumlah Besar Data

更新时间:Nov 10, 2025

Topik ini menjelaskan beberapa metode untuk mengekspor hasil perhitungan SQL MaxCompute.

Catatan

Contoh SDK dalam topik ini disediakan dalam Java.

Ikhtisar

Anda dapat menggunakan metode berikut untuk mengekspor hasil pernyataan SQL:

  • Untuk jumlah data kecil, Anda dapat menggunakan Tugas SQL untuk mengambil semua hasil kueri.

  • Untuk mengekspor seluruh tabel atau partisi, Anda dapat menggunakan Tunnel untuk mengekspor hasil kueri.

  • Jika pernyataan SQL kompleks, Anda dapat menggunakan kombinasi Tunnel dan SQL untuk mengekspor hasil kueri.

  • Anda dapat menggunakan DataWorks untuk menjalankan pernyataan SQL, melakukan sinkronisasi data, serta menggunakan fitur seperti penjadwalan berwaktu dan konfigurasi dependensi.

  • Alat open-source DataX dapat membantu Anda dengan mudah mengekspor data dari MaxCompute ke sumber data tujuan.

Mengekspor Data Menggunakan SQLTask

Anda dapat menggunakan SQLTask yang disediakan oleh SDK untuk memanggil antarmuka SQLTask.getResult(i), yang memungkinkan Anda menjalankan pernyataan SQL dan mengambil hasilnya. Untuk informasi lebih lanjut, lihat SQLTask.

Saat menggunakan SQLTask, perhatikan hal berikut:

  • SQLTask.getResult(i) digunakan untuk mengekspor hasil kueri SELECT. Antarmuka ini tidak dapat digunakan untuk mengekspor hasil operasi perintah MaxCompute lainnya, seperti show tables.

  • Jumlah catatan data yang dikembalikan oleh pernyataan SELECT ke klien dapat diatur menggunakan READ_TABLE_MAX_ROW. Untuk informasi lebih lanjut, lihat Operasi proyek.

  • Pernyataan SELECT dapat mengembalikan maksimal 10.000 catatan data ke klien. Jika Anda menjalankan pernyataan SELECT secara langsung pada klien, termasuk menggunakan SQLTask, hal tersebut setara dengan menambahkan LIMIT N di akhir pernyataan SELECT.

Mengekspor Data Menggunakan Tunnel

Jika hasil kueri yang perlu Anda ekspor adalah seluruh isi tabel atau partisi tertentu, Anda dapat menggunakan Tunnel. Untuk informasi lebih lanjut, lihat antarmuka baris perintah dan SDK Tunnel.

Kode berikut memberikan contoh sederhana mengekspor data menggunakan perintah baris Tunnel. Untuk skenario yang tidak didukung oleh perintah baris Tunnel, Anda dapat mengompilasi SDK Tunnel. Untuk informasi lebih lanjut, lihat Ikhtisar saluran data batch.

tunnel d wc_out c:\wc_out.dat;
2016-12-16 19:32:08 - sesi baru: 201612161932082d3c9b0a012f68e7 total baris: 3
2016-12-16 19:32:08 - file [0]: [0, 3), c:\wc_out.dat
mengunduh 3 rekaman ke 1 file
2016-12-16 19:32:08 - file [0] mulai
2016-12-16 19:32:08 - file [0] OK. total: 21 byte
unduh OK

Mengekspor Data Menggunakan SQLTask dan Tunnel

SQLTask tidak dapat memproses lebih dari 10.000 catatan data, tetapi Tunnel bisa. Karena keduanya saling melengkapi, Anda dapat menggunakannya bersama-sama untuk mengekspor lebih dari 10.000 catatan data.

Kode berikut memberikan contoh.

Odps odps = OdpsUtils.newDefaultOdps(); // Initialize an Odps object.
Instance i = SQLTask.run(odps, "select * from wc_in;");
i.waitForSuccess();
// Create an InstanceTunnel.
InstanceTunnel tunnel = new InstanceTunnel(odps);
// Create a DownloadSession based on the instance ID.
InstanceTunnel.DownloadSession session = tunnel.createDownloadSession(odps.getDefaultProject(), i.getId());
long count = session.getRecordCount();
// Output the number of results.
System.out.println(count);
// The method for obtaining data is the same as that for TableTunnel.
TunnelRecordReader reader = session.openRecordReader(0, count);
Record record;
while((record = reader.read()) != null)
{
    for(int col = 0; col < session.getSchema().getColumns().size(); ++col)
    {
        // The fields in the wc_in table are all of type STRING. You can directly print the output or write it to a local file.
        System.out.println(record.get(col));
    }
}
reader.close();

Mengekspor Data Menggunakan Sinkronisasi Data DataWorks

Catatan

Contoh ini menggunakan mode dasar DataWorks. Saat membuat ruang kerja, biarkan opsi Join The Public Preview Of DataStudio tidak dipilih. Contoh ini tidak berlaku untuk ruang kerja dalam pratinjau publik.

DataWorks memungkinkan Anda menjalankan pernyataan SQL dan mengonfigurasi tugas sinkronisasi data untuk memenuhi kebutuhan pembuatan dan pengeksporan data Anda.

  1. Masuk ke Konsol DataWorks.

  2. Di panel navigasi kiri, klik Workspace Management.

  3. Pada kolom Actions untuk ruang kerja yang diinginkan, pilih Quick Access > Data Development.

  4. Buat proses bisnis.

    1. Klik kanan Business Process dan pilih New Business Process.

    2. Masukkan Business Name.

    3. Klik Create.

  5. Buat node SQL.

    1. Klik kanan proses bisnis dan pilih New Node > MaxCompute > ODPS SQL.

    2. Atur Node Name menjadi runsql dan klik Confirm.

    3. Konfigurasikan node ODPS SQL dan klik Save.

  6. Buat node sinkronisasi data.

    1. Klik kanan proses bisnis dan pilih New Node > Data Integration > Offline Synchronization.

    2. Atur Node Name menjadi sync2mysql dan klik Confirm.

    3. Pilih sumber data dan tujuan.

    4. Konfigurasikan pemetaan bidang.

    5. Konfigurasikan kontrol saluran.

    6. Klik Save.

  7. Hubungkan node sinkronisasi data ke node ODPS SQL untuk mengonfigurasi dependensi. Dalam alur kerja ini, node ODPS SQL menghasilkan data, dan node sinkronisasi data mengekspor data.

  8. Setelah mengonfigurasi penjadwalan alur kerja (Anda dapat menggunakan konfigurasi default), klik Run. Berikut ini menunjukkan log operasi untuk sinkronisasi data.

    2016-12-17 23:43:46.394 [job-15598025] INFO JobContainer - 
    Task start time : 2016-12-17 23:43:34
    Task end time : 2016-12-17 23:43:46
    Total time consumed : 11s
    Average traffic : 31.36KB/s
    Record write speed : 1668rec/s
    Total records read : 16689
    Total read/write failures : 0
  9. Jalankan pernyataan SQL berikut untuk melihat hasil sinkronisasi data.

    select count(*) from result_in_db;