All Products
Search
Document Center

MaxCompute:Tabel eksternal RCFile

Last Updated:Apr 21, 2026

Topik ini menjelaskan cara membuat, membaca data dari, dan menulis data ke tabel eksternal RCFile di Object Storage Service (OSS).

Lingkup

  • Tabel eksternal OSS tidak mendukung properti cluster.

  • Ukuran satu file tidak boleh melebihi 2 GB. Jika file terlalu besar, lakukan pemisahan.

  • MaxCompute dan OSS harus berada di wilayah yang sama.

Tipe data yang didukung

Untuk informasi selengkapnya tentang tipe data MaxCompute, lihat Tipe data (Versi 1.0) dan Tipe data (Versi 2.0).

Tipe data

Dukungan

Tipe data

Dukungan

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

Buat tabel eksternal

Sintaks

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';

Parameter

Untuk informasi selengkapnya, lihat Parameter sintaks dasar.

Tulis data

Untuk informasi selengkapnya mengenai sintaks penulisan data dari MaxCompute ke OSS, lihat Tulis data ke OSS.

Kueri dan analisis

Contoh skenario

Contoh ini menunjukkan cara membuat tabel eksternal RCFile menggunakan parser data open source bawaan, menulis data ke OSS, dan melakukan kueri terhadap data tersebut.

  1. Prasyarat

    • Proyek MaxCompute telah dibuat.

    • Bucket dan folder OSS tersedia. Untuk informasi selengkapnya, lihat Buat bucket dan Kelola folder.

      MaxCompute mendukung pembuatan folder otomatis di OSS. Jika pernyataan SQL melibatkan tabel eksternal dan user-defined function (UDF), Anda dapat menggunakan satu pernyataan untuk membaca dan menulis ke tabel sekaligus menggunakan UDF tersebut. Anda juga dapat membuat folder secara manual.

      MaxCompute hanya dideploy di wilayah tertentu. Untuk menghindari potensi masalah koneksi data lintas wilayah, pastikan bucket OSS Anda berada di wilayah yang sama dengan proyek MaxCompute Anda.
    • Otorisasi

      • Anda harus memiliki izin untuk mengakses OSS. Anda dapat menggunakan Akun Alibaba Cloud, pengguna Resource Access Management (RAM), atau Peran RAM untuk mengakses tabel eksternal OSS. Untuk informasi selengkapnya mengenai otorisasi, lihat Otorisasi akses dalam mode STS untuk OSS.

      • Anda harus memiliki izin CreateTable di proyek MaxCompute. Untuk informasi selengkapnya mengenai izin tabel, lihat Izin MaxCompute.

  2. Unggah data uji

    Masuk ke Konsol OSS dan unggah file data RCFile ke folder oss-mc-test/Rcfile/dt=20241223/ di bucket OSS. Untuk informasi selengkapnya, lihat Unggah file ke OSS.

  3. Buat tabel eksternal RCFile

    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. Impor data partisi. Jika tabel eksternal OSS merupakan tabel partisi, Anda juga harus mengimpor data partisinya. Untuk informasi selengkapnya, lihat Sintaks untuk menambahkan data partisi ke tabel eksternal OSS.

    -- Impor data partisi.
    MSCK REPAIR TABLE mc_oss_rcfile_extable ADD PARTITIONS;
  5. Lakukan kueri terhadap tabel eksternal RCFile.

    SELECT * FROM mc_oss_rcfile_extable2_pt WHERE dt=20241223;
    
    -- Hasil berikut dikembalikan:
    +------------+------------+------------+------------+------------------+-------------------+------------------+------------+------------+
    | 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. Tulis data ke tabel eksternal RCFile.

    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. Periksa apakah data berhasil ditulis.

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