全部产品
Search
文档中心

MaxCompute:FAQ tentang Perintah Tunnel

更新时间:Jul 02, 2025

Topik ini menjawab beberapa pertanyaan umum terkait perintah Tunnel.

Kategori

FAQ

Tunnel Upload

Tunnel Download

Sejarah Tunnel

Berapa lama saya dapat menyimpan informasi tentang perintah Tunnel historis?

Masalah lainnya

Apakah perintah Tunnel Upload mendukung wildcard atau ekspresi reguler?

Tidak, perintah Tunnel Upload tidak mendukung wildcard atau ekspresi reguler.

Apakah ukuran file dibatasi ketika saya menggunakan perintah Tunnel Upload untuk mengunggah file? Apakah ukuran rekaman data dibatasi? Apakah file yang diunggah dikompresi?

Tidak, ukuran file tidak dibatasi saat menggunakan perintah Tunnel Upload untuk mengunggah file. Namun, durasi unggah tidak boleh melebihi 2 jam. Anda dapat memperkirakan ukuran maksimum data yang dapat diunggah berdasarkan kecepatan dan durasi unggah.

Ukuran rekaman data tidak boleh melebihi 200 MB.

Secara default, perintah Tunnel Upload mengunggah data setelah data dikompresi. Jika bandwidth unggah cukup, Anda dapat menonaktifkan kompresi data dengan mengatur parameter -cp ke false.

Dapatkah saya menjalankan perintah Tunnel Upload untuk mengunggah beberapa file data ke tabel atau partisi yang sama pada saat bersamaan?

Ya, Anda dapat menjalankan perintah Tunnel Upload untuk mengunggah beberapa file data ke tabel atau partisi yang sama secara bersamaan.

Dapatkah beberapa klien mengunggah data ke tabel yang sama pada saat bersamaan dengan menggunakan perintah Tunnel Upload?

Ya, beberapa klien dapat mengunggah data ke tabel yang sama secara bersamaan dengan menggunakan perintah Tunnel Upload.

Ketika saya mengunggah data, apakah saya harus memastikan bahwa partisi tujuan yang ditentukan dalam perintah Tunnel Upload sudah ada?

Ya, Anda harus memastikan bahwa partisi tujuan sudah ada. Anda juga dapat menentukan parameter -acp dalam perintah Tunnel Upload untuk mengaktifkan sistem membuat partisi tujuan secara otomatis jika partisi yang ditentukan tidak ada. Nilai default parameter ini adalah False. Untuk informasi lebih lanjut, lihat Perintah Tunnel.

Apakah saya dikenakan biaya berdasarkan ukuran data terkompresi ketika saya menggunakan perintah Tunnel Upload untuk mengunggah data?

Ya, Anda dikenakan biaya berdasarkan ukuran data terkompresi ketika menggunakan perintah Tunnel Upload untuk mengunggah data.

Dapatkah saya mengontrol kecepatan unggah ketika saya menggunakan perintah Tunnel Upload untuk mengunggah data?

Tidak, Anda tidak dapat mengontrol kecepatan unggah ketika menggunakan perintah Tunnel Upload untuk mengunggah data.

Bagaimana cara mempercepat pengunggahan data ketika saya menggunakan perintah Tunnel Upload untuk mengunggah data?

Jika pengunggahan data memakan waktu lama, Anda dapat mengonfigurasi parameter -threads untuk memotong data menjadi beberapa bagian, seperti 10 bagian, sebelum mengunggah data. Contoh perintah:

tunnel upload C:\userlog.txt userlog1 -threads 10 -s false -fd "\u0000" -rd "\n";

Ketika saya menggunakan perintah Tunnel Upload untuk mengunggah data, saya mengonfigurasi titik akhir Tunnel jaringan interkoneksi produk cloud untuk proyek MaxCompute saya tetapi proyek tersebut terhubung ke titik akhir Tunnel publik. Mengapa?

Selain titik akhir MaxCompute, Anda harus mengonfigurasi titik akhir Tunnel dalam file odps_config.ini klien MaxCompute. Untuk informasi lebih lanjut tentang cara mengonfigurasi titik akhir Tunnel, lihat Titik Akhir. Anda tidak perlu mengonfigurasi titik akhir Tunnel untuk proyek MaxCompute di wilayah China (Shanghai).

Apa yang harus saya lakukan jika kesalahan dikembalikan ketika saya menggunakan perintah Tunnel Upload untuk mengunggah data ke partisi di DataStudio?

  • Deskripsi masalah

    Ketika perintah Tunnel Upload digunakan untuk mengunggah data ke partisi di DataStudio, pesan kesalahan berikut muncul:

    FAILED: error occurred while running tunnel command.
  • Penyebab

    DataStudio tidak mendukung perintah Tunnel Upload.

  • Solusi

    Gunakan fitur impor data visual yang disediakan oleh DataWorks untuk mengunggah data. Untuk informasi lebih lanjut, lihat Impor data ke tabel MaxCompute.

Mengapa pengunggahan gagal ketika saya menggunakan perintah Tunnel Upload untuk mengunggah data yang mengandung line feed atau spasi?

Jika data mengandung line feed atau spasi, Anda dapat mengganti line feed dan spasi dalam data dengan pemisah lain dan menggunakan parameter -rd dan -fd untuk menentukan pemisah baru dalam perintah Tunnel Upload. Jika Anda tidak dapat mengubah pemisah baris atau kolom dalam data, Anda dapat mengunggah data sebagai satu baris dan menggunakan fungsi yang ditentukan pengguna (UDF) untuk mengurai data.

Dalam contoh berikut, data mengandung line feed. Untuk mengunggah data, Anda dapat menggunakan parameter -rd untuk menentukan koma (,) sebagai pemisah kolom dan menggunakan parameter -fd untuk menentukan tanda at (@) sebagai pemisah baris.

shopx,x_id,100@
shopy,y_id,200@
shopz,z_id,300@

Contoh perintah:

tunnel upload d:\data.txt sale_detail/sale_date=201312,region=hangzhou -s false -rd "," -fd "@";

Hasil berikut dikembalikan:

+-----------+-------------+-------------+-----------+--------+
| shop_name | customer_id | total_price | sale_date | region |
+-----------+-------------+-------------+-----------+--------+
| shopx     | x_id        | 100.0       | 201312    | hangzhou |
| shopy     | y_id        | 200.0       | 201312    | hangzhou |
| shopz     | z_id        | 300.0       | 201312    | hangzhou |
+-----------+-------------+-------------+-----------+--------+

Apa yang harus saya lakukan jika kesalahan OOM terjadi ketika saya menggunakan perintah Tunnel Upload untuk mengunggah data?

Perintah Tunnel Upload memungkinkan Anda mengunggah sejumlah besar data. Namun, jika pemisah baris atau kolom yang Anda konfigurasikan tidak valid, semua data mungkin dianggap sebagai satu baris dan disimpan dalam memori. Akibatnya, kesalahan kehabisan memori (OOM) terjadi.

Jika kesalahan OOM terjadi, Anda dapat mengunggah sejumlah kecil data untuk melakukan pengujian. Jika pengujian berhasil berdasarkan pemisah yang ditentukan oleh parameter -td dan -fd, Anda dapat menggunakan perintah Tunnel Upload untuk mengunggah semua data.

Bagaimana cara mengunggah semua file data dalam folder ke tabel sekaligus dengan menggunakan perintah Tunnel Upload?

Anda dapat menggunakan perintah Tunnel Upload untuk mengunggah satu file atau semua file dalam direktori level-1 tunggal sekaligus. Untuk informasi lebih lanjut, lihat Catatan Penggunaan.

Sebagai contoh, jika Anda ingin mengunggah semua file dalam direktori d:\data sekaligus, Anda dapat menjalankan perintah berikut:

tunnel upload d:\data sale_detail/sale_date=201312,region=hangzhou -s false;

Bagaimana cara menggunakan perintah Tunnel Upload untuk mengunggah beberapa file dalam direktori ke partisi yang berbeda dalam tabel sekaligus?

Anda dapat menggunakan skrip shell untuk melakukan operasi ini. Dalam contoh berikut, skrip shell digunakan dengan klien MaxCompute untuk mengunggah file di Windows. Operasi di Linux serupa. Skrip shell berisi konten berikut:

#!/bin/sh
C:/odpscmd_public/bin/odpscmd.bat  -e "create table user(data string) partitioned by (dt int);" // Buat tabel partisi bernama user yang berisi kata kunci partisi dt. Dalam contoh ini, file klien MaxCompute odpscmd.bat disimpan di direktori C:/odpscmd_public/bin. Anda dapat mengubah direktori berdasarkan kebutuhan bisnis Anda. 
dir=$(ls C:/userlog)  // Tentukan variabel dir. Variabel ini menentukan direktori tempat semua file disimpan. 
pt=0 // Variabel pt menentukan nilai kolom kunci partisi. Nilai awal variabel ini adalah 0, dan nilainya bertambah satu setiap kali file diunggah. Dengan cara ini, file disimpan ke partisi yang berbeda. 
for i in $dir  // Tentukan loop untuk melintasi semua file dalam direktori C:/userlog. 
do
    let pt=pt+1  // Nilai variabel pt bertambah satu setiap kali loop berakhir. 
    echo $i  // Tampilkan nama file. 
    echo $pt // Tampilkan nama partisi. 
    C:/odpscmd_public/bin/odpscmd.bat  -e "alter table user add partition (dt=$pt);tunnel upload C:/userlog/$i user/dt=$pt -s false -fd "%" -rd "@";" // Gunakan klien MaxCompute odpscmd untuk membuat partisi dan mengunggah file ke partisi. 
done      

Gambar berikut menunjukkan keluaran dari skrip shell yang digunakan untuk mengunggah file userlog1 dan userlog2.回显

Setelah Anda mengunggah file, Anda dapat menanyakan data tabel pada klien MaxCompute.回显2

Kesalahan dikembalikan ketika saya menggunakan perintah Tunnel Upload untuk mengunggah data. Apakah perintah Tunnel Upload menyediakan parameter yang mirip dengan parameter -f di MySQL untuk melewati data kotor dan melanjutkan pengunggahan data?

Anda dapat mengatur parameter -dbr ke true dalam perintah Tunnel Upload untuk melewati data kotor. Data kotor dihasilkan ketika ada kolom tambahan, beberapa kolom hilang, atau tipe data kolom tidak cocok. Nilai default parameter -dbr adalah false. Nilai ini menunjukkan bahwa data kotor tidak dilewati. Jika parameter -dbr diatur ke true, semua data yang tidak sesuai dengan definisi tabel dilewati. Untuk informasi lebih lanjut, lihat Unggah.

Apa yang harus saya lakukan jika pesan kesalahan "You cannot complete the specified operation under the current upload or download status" muncul ketika saya menggunakan perintah Tunnel Upload untuk mengunggah data?

  • Deskripsi masalah

    Ketika perintah Tunnel Upload digunakan untuk mengunggah data, pesan kesalahan berikut muncul:

    java.io.IOException: RequestId=XXXXXXXXXXXXXXXXXXXXXXXXX, ErrorCode=StatusConflict, ErrorMessage=You cannot complete the specified operation under the current upload or download status.        
            at com.aliyun.odps.tunnel.io.TunnelRecordWriter.close(TunnelRecordWriter.java:93)        
            at com.xgoods.utils.aliyun.maxcompute.OdpsTunnel.upload(OdpsTunnel.java:92)        
            at com.xgoods.utils.aliyun.maxcompute.OdpsTunnel.upload(OdpsTunnel.java:45)        
            at com.xeshop.task.SaleStatFeedTask.doWork(SaleStatFeedTask.java:119)        
            at com.xgoods.main.AbstractTool.excute(AbstractTool.java:90)        
            at com.xeshop.task.SaleStatFeedTask.main(SaleStatFeedTask.java:305)java.io.IOException: RequestId=XXXXXXXXXXXXXXXXXXXXXXXXX, ErrorCode=StatusConflict, ErrorMessage=You cannot complete the specified operation under the current upload or download status.       
  • Penyebab

    File sedang diunggah. Anda tidak dapat melakukan operasi unggah berulang kali.

  • Solusi

    Anda tidak perlu mengulangi operasi unggah. Tunggu hingga tugas unggah yang ada selesai.

Apa yang harus saya lakukan jika pesan kesalahan "Error writing request body to server" muncul ketika saya menggunakan perintah Tunnel Upload untuk mengunggah data?

  • Deskripsi masalah

    Ketika perintah Tunnel Upload digunakan untuk mengunggah data, pesan kesalahan berikut muncul:

    java.io.IOException: Error writing request body to server
  • Penyebab

    Masalah ini terjadi ketika data diunggah ke server. Dalam banyak kasus, masalah ini disebabkan oleh pemutusan jaringan atau waktu habis selama pengunggahan data.

    • Jika sumber data Anda bukan file lokal dan perlu diperoleh dari penyimpanan data, seperti basis data, sistem membaca data dari sumber data sebelum sistem dapat menulis data. Jika Anda tidak mengunggah data dalam waktu 600 detik, waktu habis unggah.

    • Jika Anda mengunggah data dengan menggunakan titik akhir publik, waktu habis unggah mungkin terjadi karena performa jaringan Internet yang tidak stabil.

  • Solusi

    • Peroleh data dan kemudian panggil SDK Tunnel untuk mengunggah data.

    • Anda dapat mengunggah 64 MB hingga 100 GB data dalam satu blok. Untuk mencegah waktu habis yang disebabkan oleh percobaan ulang unggah, kami sarankan Anda mengunggah maksimal 10.000 rekaman data dalam satu blok. Sesi mendukung maksimal 20.000 blok. Jika Anda ingin mengunggah data dari instance Elastic Compute Service (ECS), Anda harus mengunggah data dengan menggunakan titik akhir. Untuk informasi lebih lanjut tentang titik akhir, lihat Titik Akhir.

Apa yang harus saya lakukan jika pesan kesalahan "The specified partition does not exist" muncul ketika saya menggunakan perintah Tunnel Upload untuk mengunggah data?

  • Deskripsi masalah

    Ketika perintah Tunnel Upload digunakan untuk mengunggah data, pesan kesalahan berikut muncul:

    ErrorCode=NoSuchPartition, ErrorMessage=The specified partition does not exist
  • Penyebab

    Partisi tempat Anda ingin mengunggah data tidak ada.

  • Solusi

    Anda dapat mengeksekusi pernyataan show partitions table_name; untuk memeriksa apakah partisi tempat Anda ingin mengunggah data ada. Jika partisi tidak ada, eksekusi pernyataan alter table table_name add [if not exists] partition partition_spec untuk membuat partisi.

Apa yang harus saya lakukan jika pesan kesalahan "Column Mismatch" muncul ketika saya menggunakan perintah Tunnel Upload untuk mengunggah data?

Dalam banyak kasus, masalah ini terjadi karena pemisah baris dalam file sumber data tidak valid. Akibatnya, beberapa rekaman data dianggap sebagai satu rekaman data. Untuk mengatasi masalah ini, Anda harus memeriksa apakah pemisah baris dalam file sumber data valid. Jika pemisah baris tidak valid, ubah nilai parameter -rd.

Apa yang harus saya lakukan jika kesalahan ODPS-0110061 dikembalikan dalam skenario pengunggahan multi-thread?

  • Deskripsi masalah

    Pesan kesalahan berikut muncul dalam skenario pengunggahan data multi-thread:

    FAILED: ODPS-0110061: Failed to run ddltask - Modify DDL meta encounter exception : ODPS-0010000:System internal error - OTS transaction exception - Start of transaction failed. Reached maximum retry times because of OTSStorageTxnLockKeyFail(Inner exception: Transaction timeout because cannot acquire exclusive lock.)      
  • Penyebab

    Ketika Anda mengunggah data, sejumlah besar operasi tulis dilakukan pada tabel yang sama pada saat bersamaan.

  • Solusi

    Kurangi jumlah operasi tulis paralel. Konfigurasikan latensi antara permintaan dan izinkan percobaan ulang ketika kesalahan terjadi.

Bagaimana cara melewati header tabel dalam file CSV ketika saya menggunakan perintah Tunnel Upload untuk mengunggah file CSV?

Tetapkan parameter -h ke true dalam perintah Tunnel Upload.

Ketika saya menggunakan perintah Tunnel Upload untuk mengunggah file CSV, sebagian besar data dalam file hilang setelah diunggah. Mengapa?

Masalah ini terjadi karena format encoding data tidak valid atau pemisah dalam data tidak valid. Kami sarankan Anda memperbaiki format encoding atau pemisah yang tidak valid sebelum mengunggah data.

Bagaimana cara menggunakan skrip shell untuk mengunggah data dalam file TXT ke tabel MaxCompute?

Dalam antarmuka baris perintah (CLI) klien MaxCompute, Anda dapat menentukan parameter dalam perintah Tunnel Upload untuk mengunggah data. Perintah berikut menunjukkan contohnya:

...\odpscmd\bin>odpscmd -e "tunnel upload "$FILE" project.table"

Untuk informasi lebih lanjut tentang parameter startup klien MaxCompute, lihat Klien MaxCompute (odpscmd).

Ketika saya menggunakan perintah Tunnel Upload untuk mengunggah file dalam folder sekaligus, pesan kesalahan "Column Mismatch" muncul, tetapi file-file tersebut dapat diunggah secara terpisah. Apa yang harus saya lakukan?

Dalam perintah Tunnel Upload, atur -dbr=false -s true untuk memeriksa format data.

Dalam banyakkasus, pesan kesalahan "Column Mismatch" muncul karena jumlah kolom dalam data yang ingin Anda unggah tidak konsisten dengan jumlah kolom dalam tabel atau partisi tempat Anda ingin mengunggah data. Sebagai contoh, jika pemisah kolom yang Anda konfigurasikan tidak valid atau file berakhir dengan line feed, jumlah kolom dalam data yang ingin Anda unggah tidak sama dengan jumlah kolom dalam tabel atau partisi tempat Anda ingin mengunggah data.

Ketika saya menggunakan perintah Tunnel Upload untuk mengunggah dua file, file kedua tidak diunggah tetapi tidak ada pesan kesalahan yang muncul setelah file pertama diunggah. Mengapa?

Jika parameter unggah yang dikonfigurasikan pada klien MaxCompute mencakup --scan, kesalahan terjadi selama transfer parameter dalam mode rerun. Anda dapat menghapus --scan=true dari perintah Tunnel Upload dan coba lagi unggah.

Ketika saya menggunakan perintah Tunnel Upload untuk mengunggah data, data dibagi menjadi 50 blok. Ketika data dalam blok kedua puluh dua diunggah, pesan kesalahan "Upload Fail" muncul. Ketika saya mencoba lagi operasi unggah, sistem memulai unggah dari blok kedua puluh tiga. Apa yang harus saya lakukan?

Satu blok sesuai dengan satu permintaan HTTP. Beberapa blok dapat diunggah pada saat bersamaan. Operasi unggah paralel bersifat atomik. Pengunggahan data dalam blok tidak terpengaruh terlepas dari apakah permintaan sinkronisasi untuk blok lain berhasil.

Jumlah percobaan ulang unggah dibatasi. Jika jumlah percobaan ulang unggah untuk data dalam blok melebihi batas, sistem akan mengunggah blok berikutnya. Setelah data diunggah, Anda dapat mengeksekusi pernyataan select count(*) from table; untuk memeriksa apakah data hilang.

Ukuran log situs web yang dikumpulkan per hari oleh server lokal adalah 10 GB. Ketika saya menggunakan perintah Tunnel Upload untuk mengunggah log ini ke MaxCompute, kecepatan unggahnya sekitar 300 KB/s. Bagaimana cara meningkatkan kecepatan unggah?

Kecepatan unggah untuk perintah Tunnel Upload tidak dibatasi. Kecepatan unggah bervariasi berdasarkan bandwidth jaringan dan performa server. Untuk meningkatkan performa server, Anda dapat mengunggah data berdasarkan partisi atau tabel. Anda juga dapat mengunggah data dengan menggunakan beberapa instance ECS.

Siklus hidup sesi unggah adalah satu hari. Ketika saya mengunggah tabel berukuran besar, tugas unggah gagal karena waktu habis sesi. Apa yang harus saya lakukan?

Kami sarankan Anda membagi tugas unggah menjadi dua subtugas.

Apa yang harus saya lakukan jika pengunggahan memakan waktu lama ketika banyak sesi unggah ada?

Anda dapat mengonfigurasi ukuran setiap blok berdasarkan kebutuhan bisnis Anda. ID blok maksimum adalah 20000. Anda dapat mengonfigurasi siklus hidup sesi berdasarkan kebutuhan bisnis Anda. Data hanya dapat ditampilkan setelah Anda mengirimkan sesi. Kami sarankan Anda membuat sesi dengan interval tidak kurang dari 5 menit dan atur ukuran setiap blok dalam sesi ke nilai lebih besar dari 64 MB.

Mengapa simbol \r tambahan ada di baris terakhir data yang saya unggah?

Line feed di Windows diwakili oleh \r\n, dan line feed di macOS dan Linux diwakili oleh \n. Perintah Tunnel menggunakan line feed sistem operasi sebagai pemisah kolom default. Oleh karena itu, jika file yang ingin Anda unggah diedit dan disimpan di Windows, simbol \r ditulis ke tabel tempat file diunggah ketika Anda mengunggah file di macOS atau Linux.

Apa yang harus saya lakukan jika koma (,) digunakan sebagai pemisah kolom dan nilai bidang yang ingin saya unggah mengandung koma (,) ketika saya menggunakan perintah Tunnel Upload untuk mengunggah data?

Jika nilai bidang mengandung koma (,), Anda dapat mengubah pemisah dalam file data terlebih dahulu dan menggunakan parameter -fd untuk menentukan pemisah baru dalam perintah Tunnel Upload.

Apa yang harus saya lakukan jika spasi digunakan sebagai pemisah kolom dalam data yang ingin saya unggah atau data perlu difilter berdasarkan ekspresi reguler ketika saya menggunakan perintah Tunnel Upload untuk mengunggah data?

Perintah Tunnel Upload tidak mendukung ekspresi reguler. Anda dapat menggunakan UDF MaxCompute jika spasi digunakan sebagai pemisah kolom dalam data yang ingin Anda unggah atau data perlu difilter berdasarkan ekspresi reguler.

Dalam contoh data sumber berikut, spasi digunakan sebagai pemisah kolom dan line feed digunakan sebagai pemisah baris. Sebagian data yang ingin Anda peroleh diapit dalam tanda kutip ganda ("), dan beberapa data, seperti tanda hubung (-), perlu difilter. Anda dapat menggunakan ekspresi reguler untuk mengunggah data.

10.21.17.2 [24/Jul/2018:00:00:00 +0800] - "GET https://example.com/73477.html" 200 0 81615 81615 "-" "iphone" - HIT - - 0_0_0 001 - - - -
10.17.5.23 [24/Jul/2018:00:00:00 +0800] - "GET https://example.com/73478.html" 206 0 49369 49369 "-" "huawei" - HIT - - 0_0_0 002 - - - -
10.24.7.16 [24/Jul/2018:00:00:00 +0800] - "GET https://example.com/73479.html" 206 0 83821 83821 "-" "vivo" - HIT - - 0_0_0 003 - - - -

Prosedur:

  1. Buat tabel yang hanya berisi satu kolom untuk menyimpan data yang ingin Anda unggah. Contoh perintah:

    create table userlog1(data string);
  2. Gunakan \u0000 sebagai pemisah kolom untuk data sumber dan unggah data. Dengan cara ini, data sumber diunggah sebagai satu baris. Contoh perintah:

    tunnel upload C:\userlog.txt userlog1 -s false -fd "\u0000" -rd "\n";
  3. Setelah Anda mengunggah data sumber, gunakan MaxCompute Studio untuk menulis dan membuat UDF Python atau Java. Untuk informasi lebih lanjut tentang cara menulis dan membuat UDF Java atau UDF Python, lihat Mengembangkan UDF atau Mengembangkan UDF Python.

    Contoh kode UDF berikut menunjukkan bahwa UDF bernama ParseAccessLog dibuat.

    from odps.udf import annotate
    from odps.udf import BaseUDTF
    import re     # Kode fungsi ekspresi reguler.
    regex = '([(\d\.)]+) \[(.*?)\] - "(.*?)" (\d+) (\d+) (\d+) (\d+) "-" "(.*?)" - (.*?) - - (.*?) (.*?) - - - -'             # Ekspresi reguler yang ingin Anda gunakan.
    # line -> ip,date,request,code,c1,c2,c3,ua,q1,q2,q3
    @annotate('string -> string,string,string,string,string,string,string,string,string,string,string')  # Dalam contoh ini, 11 string digunakan. Jumlah string harus sama dengan kolom data sumber. 
    class ParseAccessLog(BaseUDTF):
        def process(self, line):
            try:
                t = re.match(regex, line).groups()
                self.forward(t[0], t[1], t[2], t[3], t[4], t[5], t[6], t[7], t[8], t[9], t[10])
            except:
                pass
  4. Setelah Anda membuat UDF, Anda dapat menggunakan UDF untuk memproses data sumber yang Anda unggah ke tabel userlog1. Anda harus memastikan bahwa nama kolom valid. Dalam contoh ini, nama kolom adalah data. Anda dapat menggunakan sintaks SQL standar untuk membuat tabel untuk menyimpan data yang diproses. Dalam contoh ini, tabel bernama userlog2 dibuat. Contoh perintah:

    create table userlog2 as select ParseAccessLog(data) as (ip,date,request,code,c1,c2,c3,ua,q1,q2,q3) from userlog1;

    Setelah data diproses, Anda dapat menanyakan data tabel userlog2 untuk memeriksa apakah data dibagi menjadi kolom.

    select * from userlog2;
    -- Hasil berikut dikembalikan: 
    +----+------+---------+------+----+----+----+----+----+----+----+
    | ip | date | request | code | c1 | c2 | c3 | ua | q1 | q2 | q3 |
    +----+------+---------+------+----+----+----+----+----+----+----+
    | 10.21.17.2 | 24/Jul/2018:00:00:00 +0800 | GET https://example.com/73477.html | 200  | 0  | 81615 | 81615 | iphone | HIT | 0_0_0 | 001 |
    | 10.17.5.23 | 24/Jul/2018:00:00:00 +0800 | GET https://example.com/73478.html | 206  | 0  | 49369 | 49369 | huawei | HIT | 0_0_0 | 002 |
    | 10.24.7.16 | 24/Jul/2018:00:00:00 +0800 | GET https://example.com/73479.html | 206  | 0  | 83821 | 83821 | vivo | HIT | 0_0_0 | 003 |
    +----+------+---------+------+----+----+----+----+----+----+----+

Apa yang harus saya lakukan jika data kotor ada setelah saya menggunakan perintah Tunnel Upload untuk mengunggah data?

Kami sarankan Anda menulis semua data ke tabel non-partisi atau ke partisi sekaligus. Jika Anda menulis data ke partisi yang sama berkali-kali, data kotor mungkin dihasilkan. Anda dapat menjalankan perintah tunnel show bad <sessionid>; pada klien MaxCompute untuk menanyakan data kotor. Jika data kotor ditemukan, Anda dapat menghapus data kotor dengan salah satu metode berikut:

  • Eksekusi pernyataan drop table ...; untuk menjatuhkan seluruh tabel atau eksekusi pernyataan alter table ... drop partition; untuk menjatuhkan partisi dan kemudian unggah data lagi.

  • Jika klausa WHERE dapat digunakan untuk memfilter data kotor, gunakan pernyataan INSERT dengan klausa WHERE untuk menyisipkan data ke tabel baru atau menimpa data tujuan partisi atau tabel yang memiliki nama yang sama dengan partisi atau tabel sumber.

Bagaimana cara menyinkronkan data tipe GEOMETRY ke MaxCompute?

MaxCompute tidak mendukung tipe data GEOMETRY. Jika Anda ingin menyinkronkan data tipe GEOMETRY ke MaxCompute, Anda harus mengonversi data tipe GEOMETRY ke tipe STRING.

GEOMETRY adalah tipe data khusus, yang berbeda dari tipe data standar dalam SQL. GEOMETRY tidak didukung dalam kerangka umum Java Database Connectivity (JDBC). Oleh karena itu, pemrosesan khusus diperlukan untuk mengimpor dan mengekspor data tipe GEOMETRY.

Format file apa saja yang dapat saya ekspor dengan menggunakan perintah Tunnel Download?

Anda dapat menggunakan perintah Tunnel Download untuk mengekspor hanya file yang berformat TXT atau CSV.

Mengapa saya dikenakan biaya ketika saya menggunakan perintah Tunnel Download untuk mengunduh data di wilayah proyek MaxCompute saya?

Jika Anda menggunakan perintah Tunnel Download untuk mengunduh data di wilayah proyek MaxCompute Anda, Anda harus mengonfigurasi titik akhir Tunnel jaringan interkoneksi produk cloud atau titik akhir Tunnel virtual private cloud (VPC). Jika tidak, data mungkin dirutekan ke wilayah lain. Anda akan dikenakan biaya ketika Anda mengunduh data melalui Internet.

Apa yang harus saya lakukan jika pesan timeout muncul ketika saya menggunakan perintah Tunnel Download untuk mengunduh data?

Dalam banyak kasus, masalah ini terjadi karena titik akhir Tunnel yang Anda konfigurasikan tidak valid. Untuk memeriksa apakah titik akhir Tunnel valid, Anda dapat menggunakan Telnet untuk menguji konektivitas jaringan.

Apa yang harus saya lakukan jika pesan kesalahan "You have NO privilege" muncul ketika saya menggunakan perintah Tunnel Download untuk mengunduh data?

  • Deskripsi masalah

    Ketika perintah Tunnel Download digunakan untuk mengunduh data, pesan kesalahan berikut muncul:

    You have NO privilege 'odps:Select' on {acs:odps:*:projects/XXX/tables/XXX}. project 'XXX' is protected.
  • Penyebab

    Fitur perlindungan data diaktifkan untuk proyek MaxCompute.

  • Solusi

    Hanya pemilik proyek yang dapat mengekspor data dari proyek ke proyek lain.

Bagaimana cara menggunakan Tunnel untuk mengunduh data yang ditentukan?

Tunnel tidak mendukung komputasi atau penyaringan data. Untuk menghitung atau menyaring data, Anda dapat menggunakan salah satu metode berikut:

  • Jalankan pekerjaan SQL untuk menyimpan data yang ingin Anda unduh sebagai tabel sementara. Setelah Anda mengunduh data, hapus tabel sementara.

  • Jika Anda ingin mengunduh sejumlah kecil data, Anda dapat mengeksekusi pernyataan SQL untuk menanyakan data yang diperlukan tanpa perlu mengunduh data.

Berapa lama saya dapat menyimpan informasi tentang perintah Tunnel historis?

Penyimpanan informasi tidak terkait dengan durasi penyimpanan. Secara default, Anda dapat menyimpan maksimal 500 rekaman data.

Bagaimana cara mengunggah data dengan menggunakan Tunnel?

Untuk mengunggah data dengan menggunakan Tunnel, lakukan langkah-langkah berikut:

  1. Siapkan data sumber, seperti file sumber atau tabel sumber.

  2. Rancang skema tabel dan tentukan definisi partisi, konversikan tipe data, lalu buat tabel pada klien MaxCompute.

  3. Tambahkan partisi ke tabel MaxCompute. Jika tabel tersebut adalah tabel non-partisi, lewati langkah ini.

  4. Unggah data ke partisi atau tabel yang ditentukan.

Dapatkah nama direktori Tunnel mengandung karakter Cina?

Ya, nama direktori Tunnel dapat mengandung karakter Cina.

Apa poin-poin yang harus saya perhatikan ketika saya menggunakan pemisah dalam perintah Tunnel?

Ketika Anda menggunakan pemisah dalam perintah Tunnel, perhatikan poin-poin berikut:

  • Parameter -rd menentukan pemisah baris, dan parameter -fd menentukan pemisah kolom.

  • Pemisah kolom yang ditentukan oleh parameter -fd tidak boleh mencakup pemisah baris yang ditentukan oleh parameter -rd.

  • Di Windows, pemisah default untuk perintah Tunnel adalah \r\n. Di Linux, pemisah default untuk perintah Tunnel adalah \n.

  • Ketika Anda mulai mengunggah data, Anda dapat melihat dan mengonfirmasi pemisah baris yang digunakan dalam operasi unggah. Fitur ini didukung di MaxCompute client V0.21.0 atau lebih baru.

Dapatkah jalur file Tunnel mengandung spasi?

Ya, jalur file Tunnel dapat mengandung spasi. Jika jalur file Tunnel mengandung spasi, Anda harus mengapit jalur tersebut dalam sepasang tanda kutip ganda (") dalam perintah Tunnel.

Apakah Tunnel mendukung file basis data non-terenkripsi dengan ekstensi .dbf?

Tunnel hanya mendukung file teks. File biner tidak didukung.

Apa rentang kecepatan yang valid untuk pengunggahan dan pengunduhan Tunnel?

Pengunggahan dan pengunduhan Tunnel bergantung pada status jaringan. Jika status jaringan normal, kecepatan unggah berkisar dari 1 MB/s hingga 20 MB/s.

Bagaimana cara mendapatkan titik akhir Tunnel publik?

Titik Akhir Tunnel Publik bervariasi berdasarkan wilayah dan jaringan. Untuk informasi lebih lanjut tentang titik akhir Tunnel publik, lihat Titik Akhir.

Apa yang harus saya lakukan jika saya gagal mengunggah atau mengunduh data dengan menggunakan perintah Tunnel?

Peroleh titik akhir Tunnel dari file odps_config.ini di direktori ..\odpscmd_public\conf. Dalam CLI klien MaxCompute, jalankan perintah curl -i Endpoint, seperti curl -i http://dt.odps.aliyun.com, untuk menguji konektivitas jaringan. Jika konektivitas jaringan abnormal, periksa status jaringan atau gunakan titik akhir Tunnel yang valid.

Apa yang harus saya lakukan jika pesan kesalahan "Java heap space FAILED" muncul ketika saya menjalankan perintah Tunnel?

  • Deskripsi masalah

    Ketika perintah Tunnel digunakan untuk mengunggah atau mengunduh data, pesan kesalahan berikut muncul:

    Java heap space FAILED: error occurred while running tunnel command
  • Penyebab

    • Penyebab 1: Ukuran satu baris data yang ingin Anda unggah terlalu besar.

    • Penyebab 2: Jumlah data yang ingin Anda unduh terlalu besar, dan memori klien MaxCompute tidak cukup.

  • Solusi

    • Solusi untuk Penyebab 1:

      1. Periksa apakah pemisah yang Anda gunakan valid. Jika pemisah tidak valid, semua rekaman data diunggah sebagai satu baris dan ukuran baris tersebut terlalu besar.

      2. Jika pemisah yang Anda gunakan valid dan ukuran satu baris masih besar, memori klien tidak cukup. Anda harus menyesuaikan parameter startup proses klien MaxCompute. Dalam file skrip odpscmd di direktori instalasi klien bin, tingkatkan nilai -Xms64m dan -Xmx512m dalam java -Xms64m -Xmx512m -classpath "${clt_dir}/lib/*:${clt_dir}/conf/"com.aliyun.openservices.odps.console.ODPSConsole "$@" berdasarkan kebutuhan bisnis Anda.

    • Solusi untuk Penyebab 2: Dalam file skrip odpscmd di direktori instalasi klien bin, tingkatkan nilai -Xms64m dan -Xmx512m dalam java -Xms64m -Xmx512m -classpath "${clt_dir}/lib/*:${clt_dir}/conf/"com.aliyun.openservices.odps.console.ODPSConsole "$@" berdasarkan kebutuhan bisnis Anda.

Apakah sesi memiliki siklus hidup? Apa yang harus saya lakukan jika siklus hidup sesi habis?

Ya, setiap sesi di server memiliki siklus hidup 24 jam. Siklus hidup dimulai setelah Anda membuat sesi. Jika siklus hidup sesi habis, sesi tidak dapat digunakan. Dalam hal ini, Anda harus membuat ulang sesi untuk menulis ulang data.

Dapatkah beberapa proses atau thread berbagi sesi yang sama?

Ya, beberapa proses atau thread dapat berbagi sesi yang sama. Namun, Anda harus memastikan bahwa setiap ID blok unik.

Apa fitur routing dari Tunnel?

Jika Anda tidak mengonfigurasi titik akhir Tunnel, lalu lintas secara otomatis dirutekan ke titik akhir Tunnel jaringan tempat MaxCompute berada. Jika Anda mengonfigurasi titik akhir Tunnel, lalu lintas dirutekan ke titik akhir yang ditentukan dan perutean otomatis tidak dilakukan.

Apakah Tunnel mendukung operasi pengunggahan dan pengunduhan paralel?

Ya, Tunnel mendukung operasi pengunggahan dan pengunduhan paralel. Perintah berikut menunjukkan contohnya:

tunnel upload E:/1.txt tmp_table_0713 --threads 5;