全部产品
Search
文档中心

MaxCompute:Catatan Penggunaan

更新时间:Jul 02, 2025

Topik ini menjelaskan fitur perintah Tunnel dan cara menggunakan perintah Tunnel untuk mengunggah atau mengunduh data.

Platform yang Didukung

MaxCompute memungkinkan Anda menggunakan klien MaxCompute (odpscmd) dan MaxCompute Studio untuk menjalankan perintah Tunnel. Untuk informasi lebih lanjut, lihat Klien MaxCompute (odpscmd) dan Apa itu MaxCompute Studio?

Fitur

Klien MaxCompute menyediakan perintah Tunnel yang mengimplementasikan fitur alat Dship. Anda dapat menggunakan perintah Tunnel untuk mengunggah atau mengunduh data. Bagian ini menjelaskan fitur dari perintah Tunnel berikut:

  • UPLOAD: Mengunggah data lokal ke tabel MaxCompute. Anda hanya dapat mengunggah file ke satu tabel atau satu partisi dalam tabel setiap kali. Untuk tabel terpartisi, Anda harus menentukan partisi tempat Anda ingin mengunggah data. Untuk tabel dengan partisi multi-level, Anda harus menentukan partisi tingkat terendah. Untuk informasi lebih lanjut, lihat Unggah.

  • DOWNLOAD: Mengunduh data tabel MaxCompute atau hasil kueri instance tertentu ke direktori lokal. Anda hanya dapat mengunduh data dari satu tabel atau partisi ke satu file lokal setiap kali. Untuk tabel terpartisi, Anda harus menentukan partisi dari mana Anda ingin mengunduh data. Untuk tabel dengan partisi multi-level, Anda harus menentukan partisi tingkat terendah. Untuk informasi lebih lanjut, lihat Unduh.

  • RESUME: Melanjutkan pengunggahan file ketika terjadi kesalahan karena pemutusan jaringan atau layanan Tunnel bermasalah. Anda tidak dapat menggunakan perintah ini untuk melanjutkan pengunduhan data. Untuk informasi lebih lanjut, lihat Lanjutkan.

  • SHOW: Menampilkan informasi tugas historis. Untuk informasi lebih lanjut, lihat Tampilkan.

  • PURGE: Membersihkan direktori sesi. Log dari tiga hari terakhir dihapus secara default. Untuk informasi lebih lanjut, lihat Pembersihan.

  • HELP: Meminta informasi bantuan. Alias perintah didukung.

  • UPSERT: Menggunakan semantik UPDATE dan INSERT untuk menulis data. Perintah ini dapat digunakan untuk menulis data hanya ke tabel Transaksi Tabel 2.0.

    Jika tidak ada data yang cocok ditemukan di tabel tujuan, data baru akan dimasukkan ke dalam tabel. Jika data yang akan ditulis sudah ada, data akan diperbarui di tabel.

Batasan Perintah Tunnel

  • Perintah Tunnel dan SDK Tunnel tidak dapat digunakan untuk tabel eksternal. Anda dapat menggunakan Tunnel untuk mengunggah data ke tabel internal MaxCompute. Anda juga dapat menggunakan OSS SDK untuk Python untuk mengunggah data ke OSS dan memetakan data tersebut ke tabel eksternal di MaxCompute. Untuk informasi lebih lanjut tentang tabel eksternal, lihat Ikhtisar Tabel Eksternal.

  • Anda tidak dapat menjalankan perintah Tunnel untuk mengunggah atau mengunduh data bertipe ARRAY, MAP, atau STRUCT.

  • Di server, siklus hidup sesi adalah 24 jam setelah sesi dibuat. Sesi dapat dibagikan di antara proses dan thread di server, tetapi Anda harus memastikan bahwa setiap ID blok unik.

    Catatan

    Sesi Tunnel: Server membuat sesi untuk tugas unggah atau unduh dan menghasilkan ID unggah atau ID unduh unik untuk mengidentifikasi tugas unggah atau unduh. Siklus hidup sesi tunnel di server adalah 24 jam. Setelah 24 jam, sesi menjadi tidak tersedia.

  • Jika Anda mengunduh data berdasarkan sesi, hanya data dari sesi yang dibuat menggunakan akun Alibaba Cloud Anda yang dapat diunduh oleh akun ini atau pengguna RAM-nya.

Unggah dan Unduh Data Tabel

Sebelum mengunggah data tabel, Anda harus mendapatkan file data data.txt yang berisi data tabel yang ingin Anda unggah. Jalur penyimpanan adalah d:\data.txt. Contoh berikut menunjukkan data dalam file tersebut.

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

Jumlah kolom pada baris ketiga data dalam file data.txt berbeda dari jumlah kolom yang ditentukan dalam tabel terpartisi sale_detail yang dibuat dalam contoh berikut. Tabel terpartisi sale_detail berisi tiga kolom, tetapi baris data tersebut hanya berisi dua kolom.

Untuk mengunggah dan mengunduh data tabel, lakukan langkah-langkah berikut:

  1. Di klien MaxCompute, jalankan pernyataan berikut untuk membuat tabel terpartisi bernama sale_detail dan tambahkan partisi ke tabel tersebut.

    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. Jalankan perintah UPLOAD untuk mengunggah file data.txt ke tabel sale_detail.

    • Pernyataan contoh

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

      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

      Data gagal diimpor karena file data.txt berisi data kotor. Sistem mengembalikan ID sesi dan pesan kesalahan.

  3. Jalankan pernyataan berikut untuk memverifikasi pengunggahan data.

    • Pernyataan contoh

      select * from sale_detail where sale_date='201312';
    • Hasil yang dikembalikan

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

      Data gagal diimpor karena file data.txt berisi data kotor. Akibatnya, tabel kosong.

  4. Jalankan perintah SHOW untuk meminta ID sesi di mana pengunggahan data gagal.

    • Pernyataan contoh

      tunnel show history;
    • Hasil yang dikembalikan

      20230505xxxxxxxxxxxb0b02dbb6bd  failed  'upload d:\data.txt sale_detail/sale_date=201312,region=hangzhou -s false'
  5. Ubah isi file data.txt menjadi informasi berikut:

    shopx,x_id,100
    shopy,y_id,200
  6. Jalankan perintah RESUME untuk melanjutkan pengunggahan data. 20230505xxxxxxxxxxxb0b02dbb6bd adalah ID sesi di mana pengunggahan data gagal.

    • Pernyataan contoh

      tunnel resume 20230505xxxxxxxxxxxb0b02dbb6bd --force;
    • Hasil yang dikembalikan

      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 pengunggahan data:

    • Pernyataan contoh

      select * from sale_detail where sale_date='201312';
    • Hasil yang dikembalikan

      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 result.txt.

    Catatan

    Lokasi lokal path tempat data diunduh dinamai berdasarkan aturan berikut:

    • Anda dapat langsung menyimpan file ke direktori bin klien MaxCompute. Dalam hal ini, Anda harus mengatur parameter path ke nilai dalam format Nama File.Ekstensi File.

    • Anda juga dapat menyimpan file ke direktori lain. Misalnya, Anda dapat menyimpan file ke folder test di drive D. Dalam hal ini, Anda harus mengatur parameter path ke nilai dalam format D:\test\Nama File.Ekstensi File.

    • Jika file di lokasi lokal memiliki nama yang sama dengan file yang ingin Anda simpan, file yang ada akan ditimpa oleh file baru.

    tunnel download sale_detail/sale_date=201312,region=hangzhou result.txt;
  9. Periksa apakah file result.txt berisi konten berikut. Jika file berisi konten berikut, pengunduhan data berhasil.

    Catatan

    File yang diunduh hanya berisi nilai kolom non-kunci partisi.

    shopx,x_id,100.0
    shopy,y_id,200.0

Unduh Data Instance

  • Metode 1: Jalankan perintah Tunnel DOWNLOAD untuk mengunduh hasil kueri instance tertentu ke file lokal.

    1. Jalankan pernyataan SELECT untuk meminta tabel terpartisi sale_detail.

      select * from sale_detail;
      Catatan

      Jika Anda menonaktifkan pemindaian tabel penuh untuk tabel terpartisi sale_detail, pesan kesalahan Table(xxxx) is full scan with all partitions, please specify partition predicates muncul. Untuk informasi lebih lanjut, lihat Kesalahan SQL (ODPS-01CCCCX).

    2. Jalankan perintah berikut untuk mengunduh hasil kueri ke file lokal:

      -- Lihat ID instance dalam pernyataan SELECT.
      show p;
      
      -- Jalankan perintah Tunnel DOWNLOAD.
      tunnel download instance://20170724071705393ge3csfb8 result.txt;
  • Metode 2: Konfigurasikan parameter yang diperlukan untuk mengunduh hasil kueri menggunakan InstanceTunnel.

    Setelah Anda mengaktifkan use_instance_tunnel di klien MaxCompute, Anda dapat menggunakan InstanceTunnel untuk mengunduh hasil kueri yang dikembalikan oleh pernyataan SELECT. Ini membantu Anda mengunduh hasil kueri dengan ukuran apa pun kapan saja. Anda dapat menggunakan salah satu metode berikut untuk mengaktifkan fitur ini:

    Catatan

    Untuk informasi lebih lanjut tentang batasan InstanceTunnel, lihat Batasan.

    • Masuk ke klien MaxCompute versi terbaru. Temukan file odps_config.ini dan pastikan use_instance_tunnel diatur ke true dan instance_tunnel_max_record diatur ke 10000.

      # unduh hasil sql dengan instance tunnel
      use_instance_tunnel=true
      # jumlah maksimum rekaman saat mengunduh hasil sql dengan instance tunnel
      instance_tunnel_max_record=10000
      Catatan

      Parameter instance_tunnel_max_record menentukan jumlah maksimum rekaman hasil SQL yang dapat diunduh menggunakan InstanceTunnel. Jika Anda tidak menentukan parameter ini, jumlah hasil kueri yang dapat diunduh tidak terbatas.

    • Atur console.sql.result.instancetunnel ke true.

      • Aktifkan InstanceTunnel.

        set console.sql.result.instancetunnel=true;
      • Jalankan pernyataan SELECT.

        select * from wc_in;

        Hasil berikut dikembalikan:

        ID = 20170724081946458g14csfb8
        Log view:
        http://logview/xxxxx.....
        +------------+
        | key        |
        +------------+
        | slkdfj     |
        | hellp      |
        | apple      |
        | tea        |
        | peach      |
        | apple      |
        | tea        |
        | teaa       |
        +------------+
        Total 8 rekaman diambil oleh instance tunnel. Jumlah rekaman maksimum: 10000
      Catatan

      Jika InstanceTunnel digunakan, pesan muncul di akhir hasil kueri. Pesan tersebut menunjukkan jumlah total rekaman yang diunduh setelah Anda menjalankan pernyataan SELECT. Dalam contoh ini, delapan rekaman diunduh. Anda dapat mengatur console.sql.result.instancetunnel ke false untuk menonaktifkan fitur ini.