全部产品
Search
文档中心

AnalyticDB:Gunakan Spark SQL untuk membuat tabel internal

更新时间:Nov 10, 2025

AnalyticDB for MySQL memungkinkan Anda menggunakan Spark SQL untuk membuat tabel C-Store. Tabel C-Store menggunakan mesin tabel XUANWU. Topik ini menjelaskan sintaks, contoh, dan pemetaan tipe data untuk membuat tabel C-Store menggunakan Spark SQL.

Informasi latar belakang

Sintaks Spark SQL untuk membuat tabel C-Store di AnalyticDB for MySQL berbeda dari sintaks pada Spark SQL open source karena AnalyticDB for MySQL mendukung properti tabel unik. Untuk informasi selengkapnya, lihat Parameter. Namun, AnalyticDB for MySQL menggunakan sintaks Spark SQL yang sama seperti Spark open source untuk membuat database dan mengkueri data. Untuk informasi selengkapnya, lihat dokumentasi referensi Spark SQL open source.

Batasan

Anda hanya dapat menggunakan Spark SQL untuk membuat tabel yang menggunakan mesin tabel XUANWU.

Sintaks

CREATE TABLE [ IF NOT EXISTS ] table_identifier
    [ ( column_name column_type [ COMMENT col_comment1 ], ... ) ]
    USING adb
    [ COMMENT table_comment ]
    [ TBLPROPERTIES ( key1=val1, key2=val2, ... ) ]

Parameter

Parameter

Wajib

Deskripsi

table_identifier

Ya

Nama tabel. Tentukan nama tabel dalam format db_name.table_identifier untuk membedakan tabel yang memiliki nama sama di database berbeda.

Untuk informasi selengkapnya tentang konvensi penamaan tabel, lihat Konvensi penamaan.

column_name

Ya

Nama kolom.

Untuk informasi selengkapnya tentang konvensi penamaan kolom, lihat Konvensi penamaan.

column_type

Ya

Tipe data kolom.

Untuk informasi selengkapnya tentang tipe data yang didukung Spark SQL, lihat Pemetaan tipe data.

USING adb

Ya

Menentukan bahwa tabel AnalyticDB for MySQL akan dibuat.

COMMENT

Ya.

Komentar tabel.

TBLPROPERTIES

distributeType

Ya

Jenis kunci distribusi. Nilai yang valid:

  • HASH: Menentukan kunci distribusi untuk tabel standar. Tabel dipartisi berdasarkan nilai hash dari kolom yang dipilih.

  • BROADCAST: Menentukan tabel replikasi. Salinan tabel replikasi disimpan di setiap shard kluster. Oleh karena itu, kami menyarankan agar ukuran tabel replikasi tidak terlalu besar.

distributeColumns

Ya

Kunci distribusi (partisi hash). Anda dapat menggunakan beberapa bidang sebagai kunci distribusi. Anda tidak dapat mengubah kunci distribusi setelah tabel dibuat.

storagePolicy

Ya

Kebijakan penyimpanan. Nilai yang valid:

  • HOT (default): Penyimpanan panas. Semua partisi data disimpan pada solid-state drive (SSD). Kebijakan ini memberikan kinerja kueri terbaik dan memenuhi kebutuhan akses berkinerja tinggi, tetapi memiliki biaya penyimpanan tertinggi.

  • COLD: penyimpanan dingin. Semua partisi disimpan di OSS dan menggunakan penyimpanan redundan zona (multi-AZ), yaitu kebijakan penyimpanan hemat biaya.

  • MIXED: Penyimpanan hibrida. Data partisi panas disimpan di SSD, dan data partisi dingin disimpan di OSS. Kebijakan ini menjamin kinerja kueri data panas dan mengurangi biaya penyimpanan data dingin. Anda harus menggunakan hotPartitionCount untuk menentukan jumlah partisi panas.

Catatan

HOT, COLD, dan MIXED tidak peka huruf besar/kecil.

hotPartitionCount

Ya.

Jumlah partisi panas saat Anda menggunakan kebijakan penyimpanan MIXED. Partisi diurutkan berdasarkan nilai kunci partisi secara menurun. N partisi pertama adalah partisi panas, dan partisi lainnya adalah partisi dingin.

Saat Anda memilih kebijakan penyimpanan MIXED, Anda juga harus menentukan jumlah partisi panas. Jika Anda memilih kebijakan penyimpanan selain MIXED, Anda tidak dapat menentukan properti hotPartitionCount=N.

Catatan

N adalah bilangan bulat positif.

indexName

Tidak

Nama indeks. Pisahkan beberapa indeks dengan koma (,). Contoh: 'indexName'='index1,index2'.

indexType

Tidak

Jenis indeks. Nilai yang valid:

  • FULLTEXT: indeks teks penuh.

  • NORMAL: indeks biasa.

Contoh: 'indexType.index1'='FULLTEXT'.

indexColumn

Tidak

Kolom yang diindeks.

Contoh: 'indexColumn.index1'='c1'.

indexAll

Tidak

Menentukan apakah semua kolom diindeks.

  • Y (default): Ya.

  • N: Tidak.

primaryKey

Tidak

Indeks kunci primer.

Kunci primer harus mencakup kunci distribusi dan kunci partisi. Kami menyarankan agar Anda menempatkan kunci distribusi dan kunci partisi di awal kunci primer komposit.

partitionType

Tidak

Jenis kunci partisi. Tetapkan ke VALUE.

partitionColumn

Tidak

Kunci partisi (subpartisi).

partitionCount

Tidak

Siklus hidup subpartisi.

Jika Anda menentukan kunci partisi, Anda harus menentukan siklus hidup menggunakan partitionCount. Jika tidak, kesalahan akan dikembalikan.

Sebagai contoh, jika kolom kunci partisi bertipe tanggal dan waktu, 'partitionCount'='365' menunjukkan bahwa setiap shard dapat menyimpan maksimal 365 subpartisi. Jika data disimpan selama 365 hari, data yang ditulis pada hari ke-1 akan dihapus secara otomatis ketika data baru ditulis pada hari ke-366.

tableEngineName

Tidak

Mesin penyimpanan. Nilai default adalah XUANWU.

Contoh

Buat tabel non-partisi

 CREATE TABLE orders (
  order_id BIGINT NOT NULL COMMENT 'ID Pesanan',
  customer_id INT NOT NULL COMMENT 'ID Pelanggan',
  order_status STRING NOT NULL COMMENT 'Status pesanan',
  total_price BIGINT NOT NULL COMMENT 'Jumlah pesanan',
  order_date TIMESTAMP NOT NULL COMMENT 'Tanggal pesanan'
)
using adb 
    TBLPROPERTIES (
    'distributeType' = 'HASH',
    'distributeColumns' = 'order_status',
    'storagePolicy' = 'COLD'
  );    

Buat tabel partisi dan atur siklus hidup

CREATE TABLE customer (
  customer_id BIGINT NOT NULL COMMENT 'ID Pelanggan',
  customer_name STRING NOT NULL COMMENT 'Nama pelanggan',
  phone_num BIGINT NOT NULL COMMENT 'Nomor telepon',
  city_name STRING NOT NULL COMMENT 'Kota',
  sex INT NOT NULL COMMENT 'Jenis kelamin',
  id_number STRING NOT NULL COMMENT 'Nomor KTP',
  home_address STRING NOT NULL COMMENT 'Alamat rumah',
  office_address STRING NOT NULL COMMENT 'Alamat kantor',
  age INT NOT NULL COMMENT 'Usia',
  login_time TIMESTAMP NOT NULL COMMENT 'Waktu logon'
 )
using adb 
    TBLPROPERTIES (
    'distributeType' = 'HASH',
    'primaryKey'= 'customer_id,phone_num,city_name',
    'distributeColumns' = 'city_name',
    'partitionType' = 'value',
    'partitionColumn' = 'city_name',
    'partitionCount' = 100,
    'indexAll' = 'N',
    'storagePolicy' = 'COLD'
  );    

Pemetaan tipe data

Tipe kolom Spark SQL

Tipe kolom XIHE SQL

BOOLEAN

BOOLEAN

TINYINT

TINYINT

SMALLINT

SMALLINT

INT

INT

INTEGER

INTEGER

BIGINT

BIGINT

FLOAT

FLOAT

DOUBLE

DOUBLE

BINARY

BINARY

DATE

DATE

STRING

  • VARCHAR

  • TIME

  • POINT

  • JSON

  • ARRAY

  • MAP

TIMESTAMP

  • DATETIME

  • TIMESTAMP

Referensi

Membaca dan menulis data tabel internal