全部产品
Search
文档中心

ApsaraDB for ClickHouse:Gunakan tabel eksternal untuk mengakses data OSS

更新时间:Dec 31, 2025

Topik ini menjelaskan cara melakukan kueri terhadap data di Alibaba Cloud Object Storage Service (OSS) menggunakan ApsaraDB for ClickHouse, serta cara menulis data ke OSS atau mengekspor data dari ClickHouse ke OSS.

Prasyarat

  • Persyaratan OSS:

    • Layanan OSS telah diaktifkan. Untuk informasi selengkapnya, lihat Aktifkan OSS.

    • Pengguna Resource Access Management (RAM) yang digunakan untuk mengakses OSS memiliki izin baca dan tulis pada objek OSS. Untuk informasi selengkapnya, lihat Ikhtisar izin dan kontrol akses.

  • Persyaratan kluster:

    Anda telah membuat akun database. Untuk informasi selengkapnya, lihat Manajemen Akun.

Persiapan

  1. Buat bucket OSS. Untuk informasi selengkapnya, lihat Buat bucket di konsol.

    Penting

    Pastikan bucket OSS berada di wilayah yang sama dengan kluster ApsaraDB for ClickHouse Anda.

    Topik ini menggunakan bucket bernama ck-test-oss sebagai contoh.

  2. Unggah file.

    Topik ini menggunakan file test.csv sebagai contoh. Sebelum memulai, unggah file ini ke OSS. File yang diunggah ke OSS disebut objek. Untuk informasi selengkapnya, lihat Unggah objek menggunakan konsol.

    Jika Anda sudah memiliki data di OSS, pastikan data tersebut dalam format file yang didukung oleh ApsaraDB for ClickHouse. Semua format didukung kecuali Protobuf dan CapnProto. Untuk informasi selengkapnya, lihat Format file yang didukung oleh ClickHouse.

Lakukan kueri terhadap data OSS

Metode 1: Gunakan tabel eksternal OSS

Edisi Perusahaan atau Edisi Kompatibel Komunitas v22.8 atau yang lebih baru

  1. Masuk ke database.

    1. Masuk ke Konsol ApsaraDB for ClickHouse.

    2. Pada halaman Clusters, pilih tab Clusters of Community-compatible Edition atau tab Enterprise Edition Clusters, lalu klik ID kluster Anda.

    3. Pada halaman Cluster Information, klik Log On to Database di pojok kanan atas.

    4. Pada kotak dialog Log On to Instance, masukkan akun database dan kata sandi, lalu klik Log On.

  2. Buat tabel eksternal OSS.

    Tabel eksternal OSS adalah jenis tabel khusus di ApsaraDB for ClickHouse yang memungkinkan Anda langsung melakukan kueri terhadap file yang disimpan di OSS tanpa mengimpor data ke penyimpanan lokal. Fitur ini memisahkan penyimpanan dari komputasi.

    Berikut adalah sintaks untuk membuat tabel.

    CREATE TABLE <table_name> [ON cluster default]
    (
    'col_name1' col_type1,
    'col_name2' col_type2,
    ...
    )
    ENGINE = OSS('https://<bucket-name>.<oss-endpoint>/<file-name>', '<access-key-id>', '<access-key-secret>', '<file-format-name>');

    Parameter:

    Nama Parameter

    Deskripsi

    Contoh

    table_name

    Nama tabel.

    oss_test_tb

    col_name1,col_name2

    Nama kolom.

    user_name

    col_type1,col_type2

    Tipe kolom.

    Penting

    Struktur tabel eksternal OSS harus sesuai dengan data OSS.

    String

    bucket-name

    Nama bucket OSS.

    ck-test-oss

    oss-endpoint

    Titik akhir ini menyediakan akses jaringan pribadi ke instans ECS dalam VPC. Untuk informasi selengkapnya, lihat Wilayah dan Titik Akhir.

    Penting

    Pastikan bucket OSS dan kluster ApsaraDB for ClickHouse Anda berada di wilayah yang sama.

    oss-cn-hangzhou-internal.aliyuncs.com

    file-name

    Nama objek di bucket OSS.

    test.csv

    access-key-id

    ID AccessKey pengguna RAM yang digunakan untuk mengakses data OSS.

    yourAccessKeyID

    access-key-secret

    Rahasia AccessKey pengguna RAM yang digunakan untuk mengakses data OSS.

    Gunakan AccessKey yang sudah ada atau buat yang baru. Untuk informasi selengkapnya, lihat Buat AccessKey.

    Penting

    Untuk mengurangi ancaman keamanan, AccessKey secret hanya ditampilkan saat Anda membuatnya. Anda tidak dapat mengambilnya kembali nanti. Pastikan untuk menyimpannya secara aman.

    yourAccessKeySecret

    file-format-name

    Format file

    Penting

    Parameter ini harus ditentukan persis seperti yang tercantum di Format file yang didukung oleh ClickHouse. Nama-nama tersebut bersifat case-sensitive.

    CSV

    Contoh:

    CREATE TABLE oss_test_tb ON cluster default
    (
    id UInt8,
    user_name String,
    age UInt16,
    city String,
    access_url String
    )
    ENGINE = OSS('http://ck-test-oss.oss-cn-hangzhou-internal.aliyuncs.com/test.csv', 'LTAI****************', 'yourAccessKeySecret','CSV')
  3. Lakukan kueri terhadap data OSS.

    SELECT * FROM oss_test_tb;

    Hasilnya sebagai berikut.

    +--------------+---------------------+---------------+----------------+----------------------+
    | id           | user_name           | age           | city           | access_url           |
    +--------------+---------------------+---------------+----------------+----------------------+
    | 1           | tick                | 32            | shanghai       | http://example.com   |
    +--------------+---------------------+---------------+----------------+----------------------+
    Returned rows: [1], Time elapsed: [183ms]

Edisi Kompatibel Komunitas v21.8 atau yang lebih lama

  1. Masuk ke database.

    1. Masuk ke Konsol ApsaraDB for ClickHouse.

    2. Pada halaman Clusters, klik tab Clusters of Community-compatible Edition, lalu klik ID kluster Anda.

    3. Pada halaman Cluster Information, klik Log On to Database di pojok kanan atas.

    4. Pada kotak dialog Log On to Instance, masukkan akun database dan kata sandi, lalu klik Log On.

  2. Buat tabel eksternal OSS.

    Berikut adalah sintaks untuk membuat tabel.

    CREATE TABLE <table_name> [ON cluster default]
    (
    'col_name1' col_type1,
    'col_name2' col_type2,
    ...
    )
    ENGINE = OSS('<oss-endpoint>', '<access-key-id>', '<access-key-secret>', '<oss-file-path>', '<file-format-name>');

    Parameter:

    Nama Parameter

    Deskripsi

    Contoh

    table_name

    Nama tabel.

    oss_test_tb

    col_name1,col_name2

    Nama kolom.

    user_name

    col_type1,col_type2

    Tipe kolom.

    Penting

    Struktur tabel eksternal OSS harus sesuai dengan data OSS.

    String

    oss-endpoint

    Titik akhir yang digunakan untuk mengakses instans ECS melalui jaringan pribadi VPC. Untuk informasi selengkapnya, lihat Wilayah dan Titik Akhir.

    Penting

    Pastikan bucket OSS dan kluster ApsaraDB for ClickHouse Anda berada di wilayah yang sama.

    oss-cn-hangzhou-internal.aliyuncs.com

    access-key-id

    ID AccessKey pengguna RAM yang digunakan untuk mengakses data OSS.

    yourAccessKeyID

    access-key-secret

    Rahasia AccessKey pengguna RAM yang digunakan untuk mengakses data OSS.

    Gunakan AccessKey yang sudah ada atau buat yang baru. Untuk informasi selengkapnya, lihat Buat AccessKey.

    Penting

    Untuk mengurangi ancaman keamanan, AccessKey secret hanya ditampilkan saat Anda membuatnya. Anda tidak dapat mengambilnya kembali nanti. Pastikan untuk menyimpannya secara aman.

    yourAccessKeySecret

    oss-file-path

    Jalur penyimpanan objek. Formatnya biasanya oss://<bucket-name>/<path-to-file>.

    Catatan

    Parameter oss-file-path mendukung pencocokan kabur dengan karakter wildcard. Untuk informasi selengkapnya, lihat Gunakan karakter wildcard untuk pencocokan kabur jalur penyimpanan OSS.

    oss://ck-test-oss/test.csv

    file-format-name

    Format file

    Penting

    Parameter ini harus ditentukan persis seperti yang tercantum di Format file yang didukung oleh ClickHouse. Nama-nama tersebut bersifat case-sensitive.

    CSV

    Contoh:

    CREATE TABLE oss_test_tb ON cluster default
    (
    id UInt8,
    user_name String,
    age UInt16,
    city String,
    access_url String
    )
    ENGINE = OSS('oss-cn-hangzhou-internal.aliyuncs.com', 'LTAI****************', 'yourAccessKeySecret', 'oss://ck-test-oss/test.csv', 'CSV');
  3. Lakukan kueri terhadap data OSS.

    SELECT * FROM oss_test_tb;

    Hasilnya sebagai berikut.

    +--------------+---------------------+---------------+----------------+----------------------+
    | id           | user_name           | age           | city           | access_url           |
    +--------------+---------------------+---------------+----------------+----------------------+
    | 1           | tick                | 32            | shanghai       | http://example.com   |
    +--------------+---------------------+---------------+----------------+----------------------+
    Returned rows: [1], Time elapsed: [183ms]

Metode 2: Gunakan fungsi tabel

Edisi Perusahaan atau Edisi Kompatibel Komunitas v22.8 atau yang lebih baru

  1. Masuk ke database.

    1. Masuk ke Konsol ApsaraDB for ClickHouse.

    2. Pada halaman Clusters, pilih tab Clusters of Community-compatible Edition atau tab Enterprise Edition Clusters, lalu klik ID kluster Anda.

    3. Pada halaman Cluster Information, klik Log On to Database di pojok kanan atas.

    4. Pada kotak dialog Log On to Instance, masukkan akun database dan kata sandi, lalu klik Log On.

  2. Gunakan fungsi tabel untuk melakukan kueri terhadap data.

    Sintaks:

    SELECT * FROM oss('https://<bucket-name>.<oss-endpoint>/<file-name>','<access-key-id>', '<access-key-secret>', '<file-format-name>', '<col_name> <col_type>(,...)');

    Parameter-parameter tersebut sama dengan yang digunakan untuk membuat tabel eksternal OSS. Untuk informasi selengkapnya, lihat Parameter.

    Contoh:

    SELECT * FROM oss('http://testBucketName.oss-cn-shanghai-internal.aliyuncs.com/test.csv', 'LTAI****************', 'yourAccessKeySecret', 'CSV', 'id UInt8, user_name String, age UInt16, city String, access_url String')

    Hasilnya sebagai berikut.

    +--------------+---------------------+---------------+----------------+----------------------+
    | id           | user_name           | age           | city           | access_url           |
    +--------------+---------------------+---------------+----------------+----------------------+
    | 1           | tick                | 32            | shanghai       | http://example.com   |
    +--------------+---------------------+---------------+----------------+----------------------+
    Returned rows: [1], Time elapsed: [183ms]

Edisi Kompatibel Komunitas v21.8 atau yang lebih lama

  1. Masuk ke database.

    1. Masuk ke Konsol ApsaraDB for ClickHouse.

    2. Pada halaman Clusters, klik tab Clusters of Community-compatible Edition, lalu klik ID kluster Anda.

    3. Pada halaman Cluster Information, klik Log On to Database di pojok kanan atas.

    4. Pada kotak dialog Log On to Instance, masukkan akun database dan kata sandi, lalu klik Log On.

  2. Gunakan fungsi tabel untuk melakukan kueri terhadap data.

    Sintaks:

    SELECT * FROM oss('<oss-endpoint>', '<access-key-id>', '<access-key-secret>', '<oss-file-path>', '<file-format-name>', '<col_name> <col_type>(,...)');

    Parameter-parameter tersebut sama dengan yang digunakan untuk membuat tabel eksternal OSS. Untuk informasi selengkapnya, lihat Parameter.

    Contoh:

    SELECT * FROM oss('oss-cn-hangzhou-internal.aliyuncs.com', 'LTAI****************', 'yourAccessKeySecret', 'oss://ck-test-oss/test.csv', 'CSV', 'id UInt8, user_name String, age UInt16, city String, access_url String');

    Hasilnya sebagai berikut.

    +--------------+---------------------+---------------+----------------+----------------------+
    | id           | user_name           | age           | city           | access_url           |
    +--------------+---------------------+---------------+----------------+----------------------+
    | 1           | tick                | 32            | shanghai       | http://example.com   |
    +--------------+---------------------+---------------+----------------+----------------------+
    Returned rows: [1], Time elapsed: [183ms]

Ekspor data ClickHouse atau tulis data ke OSS

Catatan penggunaan

Edisi Perusahaan atau Edisi Kompatibel Komunitas v22.8 atau yang lebih baru

Saat mengekspor data dari ClickHouse ke OSS atau menulis data langsung ke OSS, Anda harus mengatur salah satu parameter berikut: `s3_truncate_on_insert=1` atau `s3_create_new_file_on_insert=1`. Jika tidak mengatur parameter ini atau mengaturnya ke 0, operasi akan gagal jika objek sudah ada di jalur tujuan.

  • s3_truncate_on_insert=1: ApsaraDB for ClickHouse memeriksa apakah objek sudah ada di jalur tujuan sebelum mengekspor atau menulis data.

    • Jika file sudah ada, ClickHouse akan menimpa file tersebut dengan data baru.

    • Ini cocok untuk skenario penimpaan penuh. Gunakan dengan hati-hati, karena operasi ini menghapus data asli.

  • s3_create_new_file_on_insert=1: ClickHouse memeriksa apakah objek sudah ada di jalur tujuan sebelum mengekspor atau menulis data.

    • Jika file dengan nama yang ditentukan sudah ada, ClickHouse membuat file baru di folder yang sama dan menuliskan data ke dalamnya. File baru tersebut diberi nama menggunakan format berikut: nama file objek + angka inkremental yang dimulai dari 0 + nama format file.

      Sebagai contoh, jika objek tujuan yang ditentukan saat membuat tabel eksternal OSS adalah test.csv, maka objek baru diberi nama test0.csv setelah operasi pertama. Setelah operasi kedua, objek baru tersebut diberi nama test1.csv.

    • Metode ini cocok untuk skenario ekspor atau penulisan inkremental dan menghindari penimpaan data yang sudah ada.

Edisi Kompatibel Komunitas v21.8 atau yang lebih lama

Saat mengekspor data dari ClickHouse ke OSS atau menulis data langsung ke OSS, hanya satu objek OSS yang digunakan. Data yang diekspor atau ditulis akan menimpa isi objek asli. Gunakan dengan hati-hati.

Langkah 1: Masuk ke database

  1. Masuk ke Konsol ApsaraDB for ClickHouse.

  2. Pada halaman Clusters, pilih tab Clusters of Community-compatible Edition atau tab Enterprise Edition Clusters, lalu klik ID kluster Anda.

  3. Pada halaman Cluster Information, klik Log On to Database di pojok kanan atas.

  4. Pada kotak dialog Log On to Instance, masukkan akun database dan kata sandi, lalu klik Log On.

Langkah 2: (Opsional) Siapkan data untuk diekspor

Jika Anda mengekspor data dari ClickHouse ke OSS dan belum memiliki data untuk diekspor, ikuti langkah-langkah berikut untuk menyiapkan data.

Jika Anda sudah memiliki data untuk diekspor, langkah ini dapat dilewati.

  1. Buat tabel berdasarkan edisi kluster.

    Contoh berikut membuat tabel pada kluster single-replica Edisi Kompatibel Komunitas. Untuk membuat tabel pada kluster dual-replica Edisi Perusahaan atau Edisi Kompatibel Komunitas, lihat Buat tabel.

     CREATE TABLE test_tb_local ON cluster default
    (
    id UInt8,
    user_name String,
    age UInt16,
    city String,
    access_url String
    )
    ENGINE = MergeTree()
    ORDER BY id;
  2. Tulis data sampel.

    INSERT INTO test_tb_local VALUES (13, 'tick', 25, 'shanghai', 'http://example.com');

  3. (Opsional) Lihat data.

    Anda dapat menjalankan pernyataan berikut untuk memverifikasi bahwa data telah berhasil ditulis.

    SELECT * FROM test_tb_local;

Langkah 3: Buat tabel eksternal OSS

Edisi Perusahaan atau Edisi Kompatibel Komunitas v22.8 atau yang lebih baru

Berikut adalah sintaks untuk membuat tabel.

CREATE TABLE <table_name> [ON cluster default]
(
'col_name1' col_type1,
'col_name2' col_type2,
...
)
ENGINE = OSS('https://<bucket-name>.<oss-endpoint>/<file-name>', '<access-key-id>', '<access-key-secret>', '<file-format-name>');

Parameter:

Nama Parameter

Deskripsi

Contoh

table_name

Nama tabel.

oss_test_tb

col_name1,col_name2

Nama kolom.

user_name

col_type1,col_type2

Tipe kolom.

Penting

Struktur tabel eksternal OSS harus sesuai dengan data OSS.

String

bucket-name

Nama bucket OSS.

ck-test-oss

oss-endpoint

Titik akhir ini menyediakan akses jaringan pribadi ke instans ECS dalam VPC. Untuk informasi selengkapnya, lihat Wilayah dan Titik Akhir.

Penting

Pastikan bucket OSS dan kluster ApsaraDB for ClickHouse Anda berada di wilayah yang sama.

oss-cn-hangzhou-internal.aliyuncs.com

file-name

Nama objek di bucket OSS.

test.csv

access-key-id

ID AccessKey pengguna RAM yang digunakan untuk mengakses data OSS.

yourAccessKeyID

access-key-secret

Rahasia AccessKey pengguna RAM yang digunakan untuk mengakses data OSS.

Gunakan AccessKey yang sudah ada atau buat yang baru. Untuk informasi selengkapnya, lihat Buat AccessKey.

Penting

Untuk mengurangi ancaman keamanan, AccessKey secret hanya ditampilkan saat Anda membuatnya. Anda tidak dapat mengambilnya kembali nanti. Pastikan untuk menyimpannya secara aman.

yourAccessKeySecret

file-format-name

Format file

Penting

Parameter ini harus ditentukan persis seperti yang tercantum di Format file yang didukung oleh ClickHouse. Nama-nama tersebut bersifat case-sensitive.

CSV

Contoh:

CREATE TABLE oss_test_tb ON cluster default
(
id UInt8,
user_name String,
age UInt16,
city String,
access_url String
)
ENGINE = OSS('http://ck-test-oss.oss-cn-hangzhou-internal.aliyuncs.com/test.csv', 'LTAI****************', 'yourAccessKeySecret','CSV')

Edisi Kompatibel Komunitas v21.8 atau yang lebih lama

Berikut adalah sintaks untuk membuat tabel.

CREATE TABLE <table_name> [ON cluster default]
(
'col_name1' col_type1,
'col_name2' col_type2,
...
)
ENGINE = OSS('<oss-endpoint>', '<access-key-id>', '<access-key-secret>', '<oss-file-path>', '<file-format-name>');

Parameter:

Nama Parameter

Deskripsi

Contoh

table_name

Nama tabel.

oss_test_tb

col_name1,col_name2

Nama kolom.

user_name

col_type1,col_type2

Tipe kolom.

Penting

Struktur tabel eksternal OSS harus sesuai dengan data OSS.

String

oss-endpoint

Titik akhir yang digunakan untuk mengakses instans ECS melalui jaringan pribadi VPC. Untuk informasi selengkapnya, lihat Wilayah dan Titik Akhir.

Penting

Pastikan bucket OSS dan kluster ApsaraDB for ClickHouse Anda berada di wilayah yang sama.

oss-cn-hangzhou-internal.aliyuncs.com

access-key-id

ID AccessKey pengguna RAM yang digunakan untuk mengakses data OSS.

yourAccessKeyID

access-key-secret

Rahasia AccessKey pengguna RAM yang digunakan untuk mengakses data OSS.

Gunakan AccessKey yang sudah ada atau buat yang baru. Untuk informasi selengkapnya, lihat Buat AccessKey.

Penting

Untuk mengurangi ancaman keamanan, AccessKey secret hanya ditampilkan saat Anda membuatnya. Anda tidak dapat mengambilnya kembali nanti. Pastikan untuk menyimpannya secara aman.

yourAccessKeySecret

oss-file-path

Jalur penyimpanan objek. Formatnya biasanya oss://<bucket-name>/<path-to-file>.

Catatan

Parameter oss-file-path mendukung pencocokan kabur dengan karakter wildcard. Untuk informasi selengkapnya, lihat Gunakan karakter wildcard untuk pencocokan kabur jalur penyimpanan OSS.

oss://ck-test-oss/test.csv

file-format-name

Format file

Penting

Parameter ini harus ditentukan persis seperti yang tercantum di Format file yang didukung oleh ClickHouse. Nama-nama tersebut bersifat case-sensitive.

CSV

Contoh:

CREATE TABLE oss_test_tb ON cluster default
(
id UInt8,
user_name String,
age UInt16,
city String,
access_url String
)
ENGINE = OSS('oss-cn-hangzhou-internal.aliyuncs.com', 'LTAI****************', 'yourAccessKeySecret', 'oss://ck-test-oss/test.csv', 'CSV');

Langkah 4: Ekspor atau tulis data ke OSS

Untuk mengekspor atau menulis data ke OSS, gunakan tabel eksternal OSS dan pernyataan INSERT INTO. Untuk informasi selengkapnya tentang sintaks, lihat INSERT INTO. Contoh berikut memberikan pernyataan untuk berbagai skenario.

Ekspor data ClickHouse

Edisi Perusahaan atau Edisi Kompatibel Komunitas v22.8 atau yang lebih baru

  • Ekspor penimpaan penuh (ekspor data ke OSS dan timpa data yang sudah ada).

    INSERT INTO oss_test_tb SETTINGS s3_truncate_on_insert = 1 SELECT * FROM test_tb_local;
  • Ekspor inkremental (ekspor data ke OSS dan jangan timpa data yang sudah ada).

    INSERT INTO oss_test_tb SETTINGS s3_create_new_file_on_insert = 1 SELECT * FROM test_tb_local;

    Setelah operasi ini selesai, objek baru dibuat di bucket OSS. Objek baru diberi nama sebagai berikut: nama objek tujuan + angka yang dimulai dari 0 dan bertambah 1 + nama format objek.

    Sebagai contoh, jika objek tujuan yang ditentukan saat membuat tabel eksternal OSS adalah test.csv, objek baru dinamai test0.csv. Jika Anda menjalankan operasi lagi, objek baru dinamai test1.csv. Anda dapat melihat objek baru di Konsol OSS.

Edisi Kompatibel Komunitas v21.8 atau yang lebih lama

Penting

Mengekspor data ClickHouse ke OSS akan menimpa data yang sudah ada. Gunakan dengan hati-hati.

INSERT INTO oss_test_tb  SELECT * FROM test_tb_local;

Tulis data

Edisi Perusahaan atau Edisi Kompatibel Komunitas v22.8 atau yang lebih baru

  • Tulis data baru ke OSS dan timpa data yang sudah ada.

    INSERT INTO oss_test_tb SETTINGS s3_truncate_on_insert = 1 VALUES (14, 'tick', 25, 'shanghai', 'http://example.com');
  • Tulis data baru ke OSS dan jangan timpa data yang sudah ada.

    INSERT INTO oss_test_tb SETTINGS s3_create_new_file_on_insert = 1 VALUES (14, 'tick', 25, 'shanghai', 'http://example.com');

    Setelah operasi ini selesai, objek baru dibuat di bucket OSS. Objek baru diberi nama sebagai berikut: nama objek tujuan + angka yang dimulai dari 0 dan bertambah 1 + nama format objek.

    Misalnya, jika objek tujuan yang ditentukan saat membuat tabel eksternal OSS adalah test.csv, objek baru akan dinamai test0.csv. Jika Anda menjalankan operasi lagi, objek baru akan dinamai test1.csv. Anda dapat melihat objek baru di Konsol OSS.

Edisi Kompatibel Komunitas v21.8 atau yang lebih lama

Penting

Menulis data ke OSS dari ClickHouse akan menimpa data yang sudah ada. Gunakan dengan hati-hati.

INSERT INTO oss_test_tb SETTINGS s3_truncate_on_insert = 1 VALUES (14, 'tick', 25, 'shanghai', 'http://example.com');

Operasi lainnya: Impor data OSS ke ClickHouse

Jika Anda menggunakan OSS untuk menyiapkan dan memigrasikan data sumber ke ClickHouse, Anda juga harus mengimpor data tersebut dari OSS ke kluster ClickHouse tujuan. Untuk informasi selengkapnya, lihat Impor data dari OSS.