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
Buat bucket OSS. Untuk informasi selengkapnya, lihat Buat bucket di konsol.
PentingPastikan bucket OSS berada di wilayah yang sama dengan kluster ApsaraDB for ClickHouse Anda.
Topik ini menggunakan bucket bernama ck-test-oss sebagai contoh.
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
Masuk ke database.
Masuk ke Konsol ApsaraDB for ClickHouse.
Pada halaman Clusters, pilih tab Clusters of Community-compatible Edition atau tab Enterprise Edition Clusters, lalu klik ID kluster Anda.
Pada halaman Cluster Information, klik Log On to Database di pojok kanan atas.
Pada kotak dialog Log On to Instance, masukkan akun database dan kata sandi, lalu klik Log On.
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.
PentingStruktur 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.
PentingPastikan 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.
PentingUntuk 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
PentingParameter 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')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
Masuk ke database.
Masuk ke Konsol ApsaraDB for ClickHouse.
Pada halaman Clusters, klik tab Clusters of Community-compatible Edition, lalu klik ID kluster Anda.
Pada halaman Cluster Information, klik Log On to Database di pojok kanan atas.
Pada kotak dialog Log On to Instance, masukkan akun database dan kata sandi, lalu klik Log On.
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.
PentingStruktur 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.
PentingPastikan 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.
PentingUntuk 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>.CatatanParameter
oss-file-pathmendukung 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
PentingParameter 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');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
Masuk ke database.
Masuk ke Konsol ApsaraDB for ClickHouse.
Pada halaman Clusters, pilih tab Clusters of Community-compatible Edition atau tab Enterprise Edition Clusters, lalu klik ID kluster Anda.
Pada halaman Cluster Information, klik Log On to Database di pojok kanan atas.
Pada kotak dialog Log On to Instance, masukkan akun database dan kata sandi, lalu klik Log On.
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
Masuk ke database.
Masuk ke Konsol ApsaraDB for ClickHouse.
Pada halaman Clusters, klik tab Clusters of Community-compatible Edition, lalu klik ID kluster Anda.
Pada halaman Cluster Information, klik Log On to Database di pojok kanan atas.
Pada kotak dialog Log On to Instance, masukkan akun database dan kata sandi, lalu klik Log On.
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
Masuk ke Konsol ApsaraDB for ClickHouse.
Pada halaman Clusters, pilih tab Clusters of Community-compatible Edition atau tab Enterprise Edition Clusters, lalu klik ID kluster Anda.
Pada halaman Cluster Information, klik Log On to Database di pojok kanan atas.
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.
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;Tulis data sampel.
INSERT INTO test_tb_local VALUES (13, 'tick', 25, 'shanghai', 'http://example.com');(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 Catatan Parameter | 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
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
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.