全部产品
Search
文档中心

MaxCompute:Tabel eksternal RCFILE

更新时间:Nov 10, 2025

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

Prasyarat

  • Akun Alibaba Cloud, Pengguna RAM, atau Peran RAM Anda harus memiliki izin yang diperlukan untuk mengakses tabel eksternal OSS. Untuk informasi selengkapnya tentang otorisasi, lihat Otorisasi STS untuk OSS.

  • (Opsional) Anda telah membuat bucket OSS, direktori OSS, dan file data OSS. Untuk informasi selengkapnya, lihat Buat bucket, Kelola direktori, dan Upload sederhana.

    MaxCompute dapat secara otomatis membuat direktori di OSS. Anda dapat menggunakan satu pernyataan SQL untuk melakukan operasi baca dan tulis yang melibatkan tabel eksternal dan UDF sekaligus. Pembuatan direktori secara manual tidak lagi diperlukan, meskipun metode lama masih didukung.
  • Anda telah membuat proyek MaxCompute. Untuk informasi selengkapnya, lihat Buat proyek MaxCompute.

    MaxCompute hanya tersedia di wilayah tertentu. Untuk mencegah masalah konektivitas data lintas wilayah, gunakan bucket yang berada di wilayah yang sama dengan proyek MaxCompute Anda.
  • Akun Alibaba Cloud atau Pengguna RAM Anda memiliki izin CreateTable pada proyek Anda. Untuk informasi selengkapnya tentang izin operasi tabel, lihat Izin MaxCompute.

Batasan

  • Properti kluster tidak didukung untuk tabel eksternal OSS.

  • Ukuran satu file tidak boleh melebihi 3 GB. Jika ukuran file lebih besar dari 3 GB, Anda harus membaginya.

Tipe data yang didukung

Catatan

Untuk informasi selengkapnya tentang tipe data MaxCompute, lihat Edisi tipe data MaxCompute V1.0 dan Edisi tipe data MaxCompute V2.0.

Tipe data

Dukungan

Tipe data

Dukungan

TINYINT

已开通

STRING

已开通

SMALLINT

已开通

DATE

已开通

INT

已开通

DATETIME

已开通

BIGINT

已开通

TIMESTAMP

已开通

BINARY

已开通

TIMESTAMP_NTZ

已开通

FLOAT

已开通

BOOLEAN

已开通

DOUBLE

已开通

ARRAY

已开通

DECIMAL(presisi,skala)

已开通

MAP

已开通

VARCHAR(n)

已开通

STRUCT

已开通

CHAR(n)

已开通

JSON

未开通

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 tentang sintaks penulisan data dari MaxCompute ke OSS, lihat Tulis data ke OSS.

Analisis kueri

  • Untuk informasi selengkapnya tentang sintaks SELECT, lihat Baca data OSS.

  • Untuk informasi selengkapnya tentang mengoptimalkan rencana kueri, lihat Optimasi kueri.

Contoh

Contoh ini menunjukkan cara membuat tabel eksternal dalam format RCFILE menggunakan pengurai data open source bawaan, menulis data ke tabel tersebut di OSS, lalu mengkueri data tersebut.

  1. Persiapkan data.

    Masuk ke Konsol OSS dan unggah file data RCFILE uji ke direktori oss-mc-test/Demo_rcfile+pt/dt=20250521/ di bucket OSS Anda. Untuk informasi selengkapnya, lihat Unggah file ke OSS.

  2. Buat tabel eksternal RCFILE.

    CREATE EXTERNAL TABLE  mc_oss_rcfile_extable2_pt
    (
      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/Demo_rcfile+pt/';
  3. Impor data partisi. Jika tabel eksternal OSS merupakan tabel partisi, Anda harus melakukan langkah tambahan untuk mengimpor data partisi. Untuk informasi selengkapnya, lihat Sintaks untuk menambahkan data partisi ke tabel eksternal OSS.

    -- Impor data partisi.
    MSCK REPAIR TABLE mc_oss_rcfile_extable2_pt ADD PARTITIONS;
  4. Kueri tabel eksternal RCFILE.

    SELECT * FROM mc_oss_rcfile_extable2_pt WHERE dt=20250521;
  5. Tulis data ke tabel eksternal RCFILE.

    INSERT INTO TABLE mc_oss_rcfile_extable2_pt PARTITION (dt=20250521) VALUES ('1','13','76','1','46.81006','-92.08174','9/14/2014 0:10','SW');
  6. Verifikasi bahwa data telah ditulis.

    SELECT * FROM mc_oss_rcfile_extable2_pt WHERE dt=20250521 AND recordId='13';