Tüm Ürünler
Search
Belge Merkezi

MaxCompute:Kullanım kılavuzu

Son Güncelleme:Oct 04, 2026

Bu konu, Tunnel komutlarının özelliklerini ve bu komutları kullanarak veri yükleme ve indirme yöntemlerini açıklar.

Desteklenen araçlar

Tunnel komutlarını odpscmd ve MaxCompute Studio'da çalıştırabilirsiniz. Daha fazla bilgi için bkz. Yerel istemci (odpscmd) ile bağlanma ve MaxCompute Studio'ya giriş.

Tunnel komutu özellikleri

İstemci içindeki Tunnel komutları, Dship aracının yerini alır. Veri yüklemek ve indirmek için bu komutları kullanabilirsiniz. Komutlar aşağıda listelenmiştir:

  • Upload: Yerel bir dosyadaki verileri bir MaxCompute tablosuna yükler. Her yükleme işlemi tek bir tabloya veya tek bir bölüme veri yazabilir. Bölümlenmiş tablolar için hedef bölümü belirtmeniz gerekir. Çok düzeyli bölümlenmiş tablolar için en alt düzey bölümü belirtmelisiniz. Daha fazla bilgi için bkz. Upload.

  • Download: Bir MaxCompute tablosundaki veya belirli bir örneğin sonuçlarındaki verileri yerel bir dosyaya indirir. Her indirme işlemi, bir tabloyu veya bir bölümü tek bir dosyaya indirebilir. Bölümlenmiş tablolar için kaynak bölümü belirtmeniz gerekir. Çok düzeyli bölümlenmiş tablolar için en alt düzey bölümü belirtmelisiniz. Daha fazla bilgi için bkz. Download.

  • Resume: Ağ sorunları veya Tunnel hizmeti hataları nedeniyle bir yükleme başarısız olursa, dosya yüklemeye devam etmek için Resume komutunu kullanabilirsiniz. Bu komut önceki yükleme işlemini sürdürür. Resume komutu şu anda indirme işlemlerini desteklemez. Daha fazla bilgi için bkz. Resume.

  • Show: Geçmiş görevlere ilişkin bilgileri görüntüler. Daha fazla bilgi için bkz. Show.

  • Purge: Oturum dizinini temizler. Bu komut varsayılan olarak son üç güne ait günlükleri kaldırır. Daha fazla bilgi için bkz. Purge.

  • Help: Yardım bilgilerini görüntüler. Her komut ve seçenek için kısa komut biçimleri desteklenir.

  • Upsert: Update ve Insert anlamlarını birleştirerek veri yazar. Bu komut yalnızca Transaction Table 2.0 tabloları için desteklenir.

    Hedef tabloda eşleşen veri bulunmazsa yeni veri eklenir. Veri zaten varsa güncellenir.

Tunnel yükleme ve indirme sınırlamaları

  • Tunnel özelliği ve Tunnel yazılım geliştirme kiti (SDK), harici tablolar üzerinde yapılan işlemleri şu anda desteklemez. Tunnel kullanarak verileri doğrudan bir MaxCompute iç tabloya yükleyebilirsiniz. Alternatif olarak, OSS Python SDK kullanarak verileri OSS'e yükleyebilir ve ardından verilerle eşleşmesi için MaxCompute'te bir harici tablo oluşturabilirsiniz. Harici tablolar hakkında daha fazla bilgi için bkz. Harici tablolara genel bakış.

  • Tunnel komutları ARRAY, MAP veya STRUCT veri türündeki verilerin yüklenmesini veya indirilmesini desteklemez.

  • Sunucu tarafındaki her Tunnel oturumunun yaşam döngüsü 24 saattir. Bir oturum oluşturulduktan sonraki 24 saat içinde kullanılabilir. Ayrıca işlemler veya iş parçacıkları arasında paylaşılabilir. Ancak aynı BlockId'nin yeniden kullanılmadığından emin olmalısınız.

    Not

    Bir Tunnel Oturumu: Sunucu tarafı, her yükleme veya indirme işlemi için bir oturum oluşturur ve işlemi tanımlamak üzere benzersiz bir UploadId veya DownloadId üretir. Sunucu tarafındaki bir Tunnel oturumunun yaşam döngüsü 24 saattir. 24 saatin sonunda oturum etkinliğini yitirir.

  • Bir oturum kullanarak veri indirirken, bir Alibaba Cloud hesabı tarafından oluşturulan oturumun yalnızca o Alibaba Cloud hesabı veya bunun RAM kullanıcıları tarafından indirme amacıyla kullanılabileceğini unutmayın.

Tablo verilerini yükleme ve indirme

Başlamadan önce data.txt adlı bir veri dosyası hazırlayın ve d:\data.txt konumuna kaydedin. Dosya aşağıdaki verileri içerir.

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

data.txt dosyasındaki üçüncü veri satırı, oluşturulacak olan bölümlenmiş sale_detail tablosunun şemasıyla eşleşmez. sale_detail tablosu üç sütunla tanımlanmıştır ancak bu satırda yalnızca iki sütun bulunur.

Aşağıdaki adımlarda tablo verilerinin nasıl yükleneceği ve indirileceği açıklanmaktadır.

  1. MaxCompute istemcisinde aşağıdaki ifadeleri çalıştırarak bölümlenmiş sale_detail tablosunu oluşturun ve buna bir bölüm ekleyin.

    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. data.txt veri dosyasını bölümlenmiş sale_detail tablosuna yüklemek için upload komutunu kullanın.

    • Örnek komut

      tunnel upload d:\data.txt sale_detail/sale_date=201312,region=hangzhou -s false;
    • Dönüş değeri

      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
      Not

      data.txt dosyası hatalı veri içerdiğinden veri aktarımı başarısız olur. Bir oturum kimliği ve bir hata mesajı döndürülür.

  3. Verileri doğrulamak için aşağıdaki ifadeyi çalıştırın.

    • Örnek komut

      select * from sale_detail where sale_date='201312';
    • Dönüş değerleri

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

      Veri aktarımı hatalı veri nedeniyle başarısız olmuş ve tablo boş kalmıştır.

  4. Başarısız yüklemenin oturum kimliğini sorgulamak için show komutunu kullanın.

    • Örnek komut

      tunnel show history;
    • Döndürülen sonuç

      20230505xxxxxxxxxxxb0b02dbb6bd  failed  'upload d:\data.txt sale_detail/sale_date=201312,region=Hangzhou -s false'
  5. data.txt örnek veri dosyasını, sale_detail tablo şemasıyla eşleşen aşağıdaki verileri içerecek şekilde değiştirin.

    shopx,x_id,100
    shopy,y_id,200
  6. Veri yüklemesini sürdürmek için resume komutunu çalıştırın. Bu komutta 20230505xxxxxxxxxxxb0b02dbb6bd başarısız yüklemenin oturum kimliğidir.

    • Örnek komut

      tunnel resume 20230505xxxxxxxxxxxb0b02dbb6bd --force;
    • Dönüş değeri

      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. Verileri doğrulamak için aşağıdaki ifadeyi çalıştırın. Yükleme başarılıdır.

    • Örnek komut

      select * from sale_detail where sale_date='201312';
    • Dönüş değeri

      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. sale_detail tablosundaki verileri result.txt adlı yerel bir dosyaya indirmek için download komutunu çalıştırın.

    Not

    Verilerin indirildiği yerel yol path için adlandırma kuralları aşağıdaki gibidir:

    • Dosyayı doğrudan MaxCompute istemcisinin bin dizinine kaydetmek için path değerini filename.extension olarak ayarlayın.

    • Dosyayı D sürücüsündeki test klasörü gibi başka bir yola kaydetmek için path değerini D:\test\filename.extension olarak ayarlayın.

    • Aynı ada sahip yerel bir dosya varsa üzerine yazılır.

    tunnel download sale_detail/sale_date=201312,region=hangzhou result.txt;
  9. result.txt dosyasının içeriğini doğrulayın. Dosya aşağıdaki içeriği içerir; bu da indirmenin başarılı olduğunu gösterir.

    Not

    İndirilen dosyada yalnızca bölüm dışı alanların değerleri görüntülenir.

    shopx,x_id,100.0
    shopy,y_id,200.0

Örnek verilerini indirme

  • Yöntem 1: Belirli bir örneğin yürütme sonuçlarını yerel bir dosyaya indirmek için tunnel download komutunu kullanın.

    1. sale_detail tablosunu sorgulamak için bir SELECT ifadesi çalıştırın.

      select * from sale_detail;
      Not

      Bölümlenmiş sale_detail tablosu için tam tablo taramaları devre dışı bırakılırsa bu komut Table(xxxx) is full scan with all partitions, please specify partition predicates hatasını döndürür. Bu sorunu çözme hakkında daha fazla bilgi için bkz. Ek: Hata kodları.

    2. Yürütme sonuçlarını yerel bir dosyaya indirmek için aşağıdaki Tunnel komutunu çalıştırın.

      --View the instance ID of the SELECT command
      show p;
      
      --Run the download command
      tunnel download instance://20170724071705393ge3csfb8 result.txt;
  • Yöntem 2: SQL sorgu sonuçlarını varsayılan olarak InstanceTunnel üzerinden çıktı almak için parametreleri yapılandırın.

    MaxCompute istemcisinde use_instance_tunnel seçeneğini etkinleştirdikten sonra SELECT sorguları sonuçları indirmek için varsayılan olarak InstanceTunnel kullanır. Bu yaklaşım, MaxCompute platformundan SQL sorgu sonuçlarını alırken oluşabilecek zaman aşımı hatalarını ve veri hacmi sınırlamalarını önlemenize yardımcı olur. Bu yapılandırmayı aşağıdaki iki yoldan biriyle etkinleştirebilirsiniz:

    Not

    InstanceTunnel'in kısıtlamaları ve sınırları hakkında daha fazla bilgi için bkz. InstanceTunnel kısıtlamaları ve sınırları.

    • İstemci nin en son sürümünde bu seçenek odps_config.ini dosyasında varsayılan olarak etkindir ve instance_tunnel_max_record varsayılan olarak 10000 olarak ayarlanır.

      # 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
      Not

      instance_tunnel_max_record parametresi, InstanceTunnel aracılığıyla indirilecek maksimum SQL sorgu sonucu sayısını belirtir. Bu parametreyi ayarlamazsanız sınırsız sayıda kayıt indirilebilir.

    • Bu özelliği etkinleştirmek için set console.sql.result.instancetunnel=true komutunu çalıştırın.

      • Instance Tunnel seçeneğini etkinleştirin.

        set console.sql.result.instancetunnel=true;
      • Bir select sorgusu çalıştırın.

        select * from wc_in;

        Aşağıdaki sonuç döndürülür.

        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
      Not

      Bir SELECT sorgusunun sonuçlarını InstanceTunnel kullanarak çıktılarken sistem son satıra bir ileti yazdırır. Bu örnekte örnek yürütme toplam 8 kayıt döndürmüştür. Benzer şekilde, bu özelliği devre dışı bırakmak için set console.sql.result.instancetunnel = false komutunu çalıştırabilirsiniz.