All Products
Search
Document Center

MaxCompute:Panduan penggunaan

Last Updated:Jun 23, 2026

Topik ini menjelaskan fitur-fitur perintah Tunnel dan cara menggunakannya untuk mengunggah serta mengunduh data.

Tool yang didukung

Anda dapat menjalankan perintah Tunnel di odpscmd dan MaxCompute Studio. Untuk informasi selengkapnya, lihat Koneksi menggunakan client lokal (odpscmd) dan Pengenalan MaxCompute Studio.

Fitur perintah Tunnel

Perintah Tunnel yang tersedia di client menggantikan tool Dship. Perintah ini dapat digunakan untuk mengunggah dan mengunduh data, dengan rincian sebagai berikut:

  • Upload: Mengunggah data dari file lokal ke tabel MaxCompute. Setiap operasi unggah hanya dapat menulis data ke satu tabel atau satu partition. Untuk tabel partisi, Anda harus menentukan partisi tujuan. Untuk tabel partisi multi-level, Anda harus menentukan partisi level terendah. Untuk informasi selengkapnya, lihat Upload.

  • Download: Mengunduh data dari tabel MaxCompute atau hasil instans tertentu ke file lokal. Setiap operasi unduh hanya dapat mengunduh satu tabel atau satu partisi ke satu file. Untuk tabel partisi, Anda harus menentukan partisi sumber. Untuk tabel partisi multi-level, Anda harus menentukan partisi level terendah. Untuk informasi selengkapnya, lihat Download.

  • Resume: Jika unggahan gagal karena masalah jaringan atau error layanan Tunnel, Anda dapat menggunakan perintah Resume untuk melanjutkan unggahan file tersebut. Perintah ini melanjutkan operasi unggah sebelumnya. Saat ini, perintah Resume tidak mendukung operasi unduh. Untuk informasi selengkapnya, lihat Resume.

  • Show: Menampilkan informasi tentang tugas historis. Untuk informasi selengkapnya, lihat Show.

  • Purge: Membersihkan direktori sesi. Secara default, perintah ini menghapus log dari tiga hari terakhir. Untuk informasi selengkapnya, lihat Purge.

  • Help: Menampilkan informasi bantuan. Format perintah singkat didukung untuk setiap perintah dan opsi.

  • Upsert: Menulis data menggunakan kombinasi semantik Update dan Insert. Perintah ini hanya didukung untuk tabel Transaction Table 2.0.

    Jika data yang sesuai tidak ditemukan di tabel tujuan, data baru akan dimasukkan. Jika data sudah ada, data tersebut akan diperbarui.

Batasan unggah dan unduh Tunnel

  • Fitur Tunnel dan software development kit (SDK) Tunnel saat ini tidak mendukung operasi pada tabel eksternal. Anda dapat menggunakan Tunnel untuk mengunggah data langsung ke tabel internal MaxCompute atau mengunggah data ke OSS menggunakan OSS Python SDK, lalu membuat tabel eksternal di MaxCompute untuk memetakan data tersebut. Untuk informasi selengkapnya tentang tabel eksternal, lihat Ikhtisar tabel eksternal.

  • Perintah Tunnel tidak mendukung pengunggahan atau pengunduhan data dengan tipe data ARRAY, MAP, atau STRUCT.

  • Siklus hidup setiap sesi Tunnel di sisi server adalah 24 jam. Sesi dapat digunakan dalam waktu 24 jam setelah dibuat dan dapat dipakai bersama lintas proses atau thread. Namun, Anda harus memastikan bahwa BlockId yang sama tidak digunakan ulang.

    Catatan

    Sesi Tunnel: Server membuat sesi untuk setiap unggahan atau unduhan dan menghasilkan UploadId atau DownloadId unik untuk mengidentifikasi operasi tersebut. Siklus hidup sesi Tunnel di sisi server adalah 24 jam. Setelah 24 jam, sesi menjadi tidak aktif.

  • Saat mengunduh data menggunakan sesi, perhatikan bahwa sesi yang dibuat oleh Akun Alibaba Cloud hanya dapat digunakan untuk unduhan oleh Akun Alibaba Cloud tersebut atau Pengguna RAM-nya.

Mengunggah dan mengunduh data tabel

Sebelum memulai, siapkan file data bernama data.txt dan simpan di d:\data.txt. File tersebut berisi data berikut.

shopx,x_id,100
shopy,y_id,200
shopz,z_id
Catatan

Baris ketiga data dalam file data.txt tidak sesuai dengan skema tabel partisi sale_detail yang akan dibuat. Tabel sale_detail didefinisikan dengan tiga kolom, tetapi baris ini hanya memiliki dua.

Langkah-langkah berikut menjelaskan cara mengunggah dan mengunduh data tabel.

  1. Di client MaxCompute, jalankan pernyataan berikut untuk membuat tabel partisi sale_detail dan menambahkan partisi ke dalamnya.

    CREATE TABLE IF NOT EXISTS sale_detail(
          shop_name     STRING,
          customer_id   STRING,
          total_price   DOUBLE)
    PARTITIONED BY (sale_date STRING,region STRING);
    
    alter table sale_detail add partition (sale_date='201312', region='hangzhou');
  2. Gunakan perintah upload untuk mengunggah file data data.txt ke tabel partisi sale_detail.

    • Contoh perintah

      tunnel upload d:\data.txt sale_detail/sale_date=201312,region=hangzhou -s false;
    • Nilai kembalian

      Upload session: 20230505xxxxxxxxxxxb0b02dbb6bd
      Start upload:d:\data.txt
      Using \r\n to split records
      Upload in strict schema mode: true
      Total bytes:42   Split input to 1 blocks
      2023-05-05 10:11:35     upload block: '1'
      ERROR: column mismatch -,expected 3 columns, 2 columns found, please check data or delimiter
      Catatan

      Karena data.txt berisi data kotor, impor data gagal. ID sesi dan pesan error dikembalikan.

  3. Jalankan pernyataan berikut untuk memverifikasi data.

    • Contoh perintah

      select * from sale_detail where sale_date='201312';
    • Nilai kembalian

      ID = 20230505xxxxxxxxxxxvc61z5
      +-----------+-------------+-------------+-----------+--------+
      | shop_name | customer_id | total_price | sale_date | region |
      +-----------+-------------+-------------+-----------+--------+
      +-----------+-------------+-------------+-----------+--------+
      Catatan

      Impor data gagal karena data kotor, sehingga tabel tetap kosong.

  4. Gunakan perintah show untuk menanyakan ID sesi dari unggahan yang gagal.

    • Contoh perintah

      tunnel show history;
    • Hasil yang dikembalikan

      20230505xxxxxxxxxxxb0b02dbb6bd  failed  'upload d:\data.txt sale_detail/sale_date=201312,region=Hangzhou -s false'
  5. Ubah file data sampel data.txt agar berisi data berikut, yang sesuai dengan skema tabel sale_detail.

    shopx,x_id,100
    shopy,y_id,200
  6. Jalankan perintah resume untuk melanjutkan unggahan data. Dalam perintah ini, 20230505xxxxxxxxxxxb0b02dbb6bd adalah ID sesi dari unggahan yang gagal.

    • Contoh perintah

      tunnel resume 20230505xxxxxxxxxxxb0b02dbb6bd --force;
    • Nilai kembalian

      start resume
      20230505xxxxxxxxxxxb0b02dbb6bd
      Upload session: 20230505xxxxxxxxxxxb0b02dbb6bd
      Start upload:d:\data.txt
      Using \r\n to split records
      Upload in strict schema mode: true
      Resume 1 blocks 
      2023-05-05 10:32:39     upload block: '1'
      2023-05-05 10:32:40     upload block complete, block id: 1
      upload complete, average speed is 0 bytes/s
      OK
  7. Jalankan pernyataan berikut untuk memverifikasi data. Unggahan berhasil.

    • Contoh perintah

      select * from sale_detail where sale_date='201312';
    • Nilai kembalian

      ID = 20230505xxxxxxxxxxxx7afc9qcg
       +-----------+-------------+-------------+-----------+--------+
       | shop_name | customer_id | total_price | sale_date | region |
       +-----------+-------------+-------------+-----------+--------+
       | shopx     | x_id        | 100.0       | 201312    | hangzhou|
       | shopy     | y_id        | 200.0       | 201312    | hangzhou|
       +-----------+-------------+-------------+-----------+--------+
  8. Jalankan perintah download untuk mengunduh data dari tabel sale_detail ke file lokal bernama result.txt.

    Catatan

    Konvensi penamaan untuk path lokal path tempat data diunduh adalah sebagai berikut:

    • Untuk menyimpan file langsung ke direktori bin client MaxCompute, atur path menjadi filename.extension.

    • Untuk menyimpan file ke path lain, seperti folder test di drive D, atur path menjadi D:\test\filename.extension.

    • Jika file lokal dengan nama yang sama sudah ada, file tersebut akan ditimpa.

    tunnel download sale_detail/sale_date=201312,region=hangzhou result.txt;
  9. Verifikasi isi file result.txt. File tersebut berisi konten berikut, yang menunjukkan bahwa unduhan berhasil.

    Catatan

    File yang diunduh hanya menampilkan nilai bidang non-partisi.

    shopx,x_id,100.0
    shopy,y_id,200.0

Unduh data Instans

  • Metode 1: Gunakan perintah tunnel download untuk mengunduh hasil eksekusi instans tertentu ke file lokal.

    1. Jalankan pernyataan SELECT untuk menanyakan tabel sale_detail.

      select * from sale_detail;
      Catatan

      Jika pemindaian tabel penuh dinonaktifkan untuk tabel partisi sale_detail, perintah ini mengembalikan error Table(xxxx) is full scan with all partitions, please specify partition predicates. Untuk informasi selengkapnya tentang cara mengatasi masalah ini, lihat Lampiran: Kode error.

    2. Jalankan perintah Tunnel berikut untuk mengunduh hasil eksekusi ke file lokal.

      --View the instance ID of the SELECT command
      show p;
      
      --Run the download command
      tunnel download instance://20170724071705393ge3csfb8 result.txt;
  • Metode 2: Konfigurasikan parameter untuk mengeluarkan hasil kueri SQL melalui InstanceTunnel secara default.

    Setelah Anda mengaktifkan opsi use_instance_tunnel di client MaxCompute, kueri SELECT secara default menggunakan InstanceTunnel untuk mengunduh hasil. Hal ini membantu menghindari error timeout dan batasan volume data saat mengambil hasil kueri SQL dari platform MaxCompute. Anda dapat mengaktifkan konfigurasi ini dengan salah satu dari dua cara berikut:

    Catatan

    Untuk informasi selengkapnya tentang batasan dan limitasi InstanceTunnel, lihat Batasan dan limitasi InstanceTunnel.

    • Pada versi terbaru client, opsi ini diaktifkan secara default dalam file odps_config.ini, dan instance_tunnel_max_record diatur ke 10000 secara default.

      # Download SQL results by instance tunnel
      use_instance_tunnel=true
      # The maximum number of records to download when using instance tunnel for SQL results
      instance_tunnel_max_record=10000
      Catatan

      Parameter instance_tunnel_max_record menentukan jumlah maksimum hasil kueri SQL yang diunduh melalui InstanceTunnel. Jika Anda tidak mengatur parameter ini, jumlah record yang diunduh tidak dibatasi.

    • Jalankan perintah set console.sql.result.instancetunnel=true untuk mengaktifkan fitur ini.

      • Aktifkan opsi Instance Tunnel.

        set console.sql.result.instancetunnel=true;
      • Jalankan kueri select.

        select * from wc_in;

        Hasil berikut dikembalikan.

        ID = 20170724081946458g14csfb8
        Log view:
        http://logview/xxxxx.....
        +------------+
        | key        |
        +------------+
        | slkdfj     |
        | hellp      |
        | apple      |
        | tea        |
        | peach      |
        | apple      |
        | tea        |
        | teaa       |
        +------------+
        A total of 8 records fetched by instance tunnel. Max record number: 10000
      Catatan

      Saat Anda menggunakan InstanceTunnel untuk mengeluarkan hasil kueri SELECT, sistem mencetak pesan pada baris terakhir. Pada contoh ini, eksekusi instans mengembalikan total 8 record. Demikian pula, Anda dapat menjalankan perintah set console.sql.result.instancetunnel = false untuk menonaktifkan fitur ini.