Tüm Ürünler
Search
Belge Merkezi

MaxCompute:RCFile external tables

Son Güncelleme:Oct 04, 2026

Bu konu, Object Storage Service (OSS) üzerinde RCFile harici tabloların nasıl oluşturulacağını, bu tablolardan veri okunacağını ve bu tablolara veri yazılacağını açıklar.

Kullanım notları

  • OSS harici tablolar küme özelliğini desteklemez.

  • Tek bir dosyanın boyutu 2 GB'ı aşamaz. 2 GB'tan büyük dosyaları bölmeniz gerekir.

  • MaxCompute ve OSS aynı bölgede bulunmalıdır.

Desteklenen veri türleri

MaxCompute veri türleri hakkında daha fazla bilgi için bkz. Veri türleri (Sürüm 1,0) ve Veri türleri (Sürüm 2,0).


Veri türü


Destek


Veri türü


Destek


TINYINT

Enabled


STRING

Activated


SMALLINT

Enabled


DATE

Enabled


INT

Activated


DATETIME

Enabled


BIGINT

Activated


TIMESTAMP

Enabled


BINARY

Activated


TIMESTAMP_NTZ

Enabled


FLOAT

Activated


BOOLEAN

Enabled


DOUBLE

Enabled


ARRAY

Enabled


DECIMAL(precision, scale)

Activated


MAP

Enabled


VARCHAR(n)

Enabled


STRUCT

Enabled


CHAR(n)

Activated


JSON

Not enabled

Harici tablo oluşturma

Sözdizimi

CREATE EXTERNAL TABLE [IF NOT EXISTS] mc_oss_rcfile_extable
(
  <col_name> <data_type>,
  ...
)
[COMMENT <table_comment>]
[PARTITIONED BY (<col_name> <data_type>, ...)]
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe'
STORED AS rcfile
LOCATION 'oss_location';

Parametreler

Daha fazla bilgi için bkz. Temel sözdizimi parametreleri.

Veri yazma

MaxCompute'den OSS'ye veri yazma sözdizimi hakkında daha fazla bilgi için bkz. OSS harici tablolar.

Sorgulama ve analiz

Örnek

Bu örnekte, yerleşik açık kaynaklı veri ayrıştırıcısını kullanarak bir RCFile harici tablonun nasıl oluşturulacağı, OSS'ye veri nasıl yazılacağı ve verilerin nasıl sorgulanacağı gösterilmektedir.

  1. Önkoşullar

    • Bir MaxCompute projesi oluşturulmuştur.

    • Bir OSS paketi ve klasörünüz bulunmaktadır. Daha fazla bilgi için bkz. Paket oluşturun ve Klasörleri yönetin.

      MaxCompute, OSS'de otomatik klasör oluşturmayı destekler. Bir SQL deyimi harici tabloları ve kullanıcı tanımlı işlevleri (UDF) içeriyorsa tek bir deyimle tablolardan okuma ve tablolara yazma işlemlerini gerçekleştirebilir ve UDF'leri kullanabilirsiniz. Klasörleri manuel olarak da oluşturabilirsiniz.

      MaxCompute yalnızca belirli bölgelerde dağıtılır. Bölgeler arası veri bağlantılarıyla ilgili potansiyel sorunları önlemek için OSS paketinizin MaxCompute projenizle aynı bölgede olduğundan emin olun.
    • Yetkilendirme

      • OSS'ye erişim iznine sahip olmanız gerekir. OSS harici tablolarına erişmek için bir Alibaba Cloud hesabı, Resource Access Management (RAM) kullanıcısı veya RAM rolü kullanabilirsiniz. Yetkilendirme hakkında daha fazla bilgi için bkz. OSS için STS modunda erişimi yetkilendirin.

      • MaxCompute projesinde CreateTable iznine sahip olmanız gerekir. Tablo izinleri hakkında daha fazla bilgi için bkz. MaxCompute izinleri.

  2. Test verilerini yükleyin

    OSS konsolu üzerinde oturum açın ve RCFile veri dosyasını OSS paketindeki oss-mc-test/Rcfile/dt=20241223/ klasörüne yükleyin. Daha fazla bilgi için bkz. Dosyaları OSS'ye yükleyin.

  3. Bir RCFile harici tablo oluşturun

    CREATE EXTERNAL TABLE  mc_oss_rcfile_extable
    (
      vehicleId STRING ,
      recordId STRING,
      patientId STRING,
      calls STRING,
      locationLatitute STRING,
      locationLongtitue STRING,
      recordTime STRING,
      direction STRING
    )
    PARTITIONED BY (dt STRING)
    ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe'
    STORED AS rcfile
    LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/oss-mc-test/Rcfile/';
  4. Bölüm verilerini içe aktarın. OSS harici tablo bölümlemeyi destekleyen bir tabloy ise bölüm verilerini de içe aktarmanız gerekir. Daha fazla bilgi için bkz. OSS harici tabloya bölüm verisi ekleme sözdizimi.

    -- Import partition data.
    MSCK REPAIR TABLE mc_oss_rcfile_extable ADD PARTITIONS;
  5. RCFile harici tabloyu sorgulayın.

    SELECT * FROM mc_oss_rcfile_extable2_pt WHERE dt=20241223;
    
    -- The following result is returned:
    +------------+------------+------------+------------+------------------+-------------------+------------------+------------+------------+
    | vehicleid  | recordid   | patientid  | calls      | locationlatitute | locationlongtitue | recordtime       | direction  | dt         | 
    +------------+------------+------------+------------+------------------+-------------------+------------------+------------+------------+
    | 1          | 1          | 7          | 1          | 39.995353        | 116.410101        | 2025/12/23 10:01 | NW         | 20241223   | 
    | 1          | 2          | 15         | 1          | 39.996123        | 116.412345        | 2025/12/24 10:01 | NE         | 20241223   | 
    | 2          | 3          | 22         | 2          | 40.001234        | 116.425678        | 2025/12/25 10:01 | SE         | 20241223   | 
    | 1          | 4          | 71         | 1          | 39.998888        | 106.419999        | 2025/12/26 10:01 | NW         | 20241223   | 
    | 3          | 5          | 50         | 1          | 29.989999        | 116.401111        | 2025/12/27 10:01 | NE         | 20241223   | 
    | 2          | 6          | 28         | 3          | 40.003456        | 110.42891         | 2025/12/28 10:01 | NW         | 20241223   | 
    | 4          | 7          | 20         | 2          | 39.991234        | 116.435555        | 2025/12/29 10:01 | NE         | 20241223   | 
    | 1          | 8          | 13         | 1          | 39.994567        | 116.41789         | 2025/12/30 10:01 | SE         | 20241223   | 
    +------------+------------+------------+------------+------------------+-------------------+------------------+------------+------------+
  6. RCFile harici tabloya veri yazın.

    INSERT INTO TABLE mc_oss_rcfile_extable2_pt PARTITION (dt=20251223) VALUES ('1','13','76','1','46.81006','-92.08174','9/14/2014 0:10','SW');
  7. Verilerin başarıyla yazılıp yazılmadığını kontrol edin.

    SELECT * FROM mc_oss_rcfile_extable2_pt WHERE dt=20250521 AND recordId='13';
    
    -- The following result is returned:
    +------------+------------+------------+------------+------------------+-------------------+----------------+------------+------------+
    | vehicleid  | recordid   | patientid  | calls      | locationlatitute | locationlongtitue | recordtime     | direction  | dt         | 
    +------------+------------+------------+------------+------------------+-------------------+----------------+------------+------------+
    | 1          | 13         | 76         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:10 | SW         | 20251223   | 
    +------------+------------+------------+------------+------------------+-------------------+----------------+------------+------------+