Anda dapat menggunakan ApsaraDB for ClickHouse untuk mengkueri data di Alibaba Cloud Object Storage Service (OSS) dan mengekspor data ClickHouse ke OSS.
Prasyarat
-
Persyaratan OSS:
-
OSS harus diaktifkan. Untuk detailnya, lihat Aktifkan OSS.
-
Pengguna RAM harus memiliki izin baca dan tulis pada objek OSS. Untuk detailnya, lihat Ikhtisar izin dan kontrol akses.
-
-
Persyaratan kluster:
Anda harus memiliki akun database. Untuk detailnya, lihat Manajemen Akun.
Prasyarat
-
Buat bucket OSS. Untuk informasi selengkapnya, lihat Buat bucket di konsol.
PentingBucket OSS harus berada di wilayah yang sama dengan kluster ApsaraDB for ClickHouse Anda.
Contoh ini menggunakan bucket bernama ck-test-oss.
-
Unggah objek ke OSS.
Contoh ini menggunakan objek test.csv. Unggah objek ini ke OSS. Untuk informasi selengkapnya, lihat Unggah objek.
Jika Anda menggunakan objek sendiri, pastikan formatnya didukung oleh ApsaraDB for ClickHouse. ApsaraDB for ClickHouse mendukung semua format kecuali Protobuf dan CapnProto. Untuk informasi selengkapnya, lihat Format file yang didukung oleh ClickHouse.
Kueri data OSS
Metode 1: Tabel eksternal OSS
Enterprise atau Community-kompatibel (22.8 atau yang lebih baru)
-
Masuk ke database.
-
Masuk ke konsol ApsaraDB for ClickHouse.
-
Di halaman Clusters, klik tab Clusters of Community-compatible Edition atau Enterprise Edition Clusters, lalu klik ID kluster target.
-
Di halaman Cluster Information, klik Log On to Database di pojok kanan atas.
-
Pada kotak dialog Connect to Instance, masukkan akun database dan kata sandi, lalu klik Log On.
-
-
Buat tabel eksternal OSS.
Tabel eksternal OSS di ApsaraDB for ClickHouse memungkinkan Anda mengkueri objek yang disimpan di OSS secara langsung tanpa mengimpor data ke penyimpanan lokal, sehingga memungkinkan pemisahan penyimpanan dan komputasi.
Sintaksnya sebagai berikut:
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>');Tabel berikut menjelaskan parameter-parameter tersebut.
Parameter
Deskripsi
Contoh
table_name
Nama tabel.
oss_test_tb
col_name1,col_name2
Nama kolom.
user_name
col_type1,col_type2
Tipe data kolom.
PentingSkema tabel eksternal OSS harus konsisten dengan data di OSS.
String
bucket-name
Nama bucket OSS.
ck-test-oss
oss-endpoint
Titik akhir internal untuk mengakses bucket OSS dari instans ECS melalui 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 untuk mengakses data OSS.
yourAccessKeyID
access-key-secret
Rahasia AccessKey pengguna RAM untuk mengakses data OSS.
Anda dapat menggunakan AccessKey yang sudah ada atau membuat yang baru. Untuk informasi selengkapnya, lihat Buat AccessKey.
PentingUntuk mengurangi risiko kebocoran AccessKey, rahasia AccessKey hanya ditampilkan saat Anda membuatnya dan tidak dapat diambil kembali nanti. Pastikan Anda menyimpan rahasia AccessKey dengan aman.
yourAccessKeySecret
file-format-name
Format objek.
PentingNilainya harus berupa format file case-sensitive yang didukung oleh ClickHouse. Untuk informasi selengkapnya, lihat format file yang didukung oleh ClickHouse.
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') -
Kueri data OSS.
SELECT * FROM oss_test_tb;Hasil berikut dikembalikan:
+--------------+---------------------+---------------+----------------+----------------------+ | id | user_name | age | city | access_url | +--------------+---------------------+---------------+----------------+----------------------+ | 1 | tick | 32 | shanghai | http://example.com | +--------------+---------------------+---------------+----------------+----------------------+ Returned rows: [1], Time elapsed: [183ms]
Kompatibel Komunitas (21.8 atau lebih lama)
-
Masuk ke database.
-
Masuk ke konsol ApsaraDB for ClickHouse.
-
Di halaman Clusters, klik tab Clusters of Community-compatible Edition, lalu klik ID kluster target.
-
Di halaman Cluster Information, klik Log On to Database di pojok kanan atas.
-
Di kotak dialog Connect to Instance, masukkan akun dan kata sandi database, lalu klik Log On.
-
-
Buat tabel eksternal OSS.
Sintaksnya sebagai berikut:
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>');Tabel berikut menjelaskan parameter-parameter tersebut.
Parameter
Deskripsi
Contoh
table_name
Nama tabel.
oss_test_tb
col_name1,col_name2
Nama kolom.
user_name
col_type1,col_type2
Tipe data kolom.
PentingSkema tabel eksternal OSS harus konsisten dengan data di OSS.
String
oss-endpoint
Titik akhir internal untuk mengakses bucket OSS dari instans ECS melalui 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 untuk mengakses data OSS.
yourAccessKeyID
access-key-secret
Rahasia AccessKey pengguna RAM untuk mengakses data OSS.
Anda dapat menggunakan AccessKey yang sudah ada atau membuat yang baru. Untuk informasi selengkapnya, lihat Buat AccessKey.
PentingUntuk mengurangi risiko kebocoran AccessKey, rahasia AccessKey hanya ditampilkan saat Anda membuatnya dan tidak dapat diambil kembali nanti. Pastikan Anda menyimpan rahasia AccessKey dengan aman.
yourAccessKeySecret
oss-file-path
Jalur penyimpanan objek, biasanya dalam format
oss://<bucket-name>/<path-to-file>.CatatanParameter
oss-file-pathmendukung pencocokan kabur dengan wildcard. Untuk informasi selengkapnya, lihat Gunakan wildcard untuk pencocokan kabur jalur penyimpanan di OSS.oss://ck-test-oss/test.csv
file-format-name
Format objek.
PentingNilainya harus berupa format file case-sensitive yang didukung oleh ClickHouse. Untuk informasi selengkapnya, lihat format file yang didukung oleh ClickHouse.
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'); -
Kueri data OSS.
SELECT * FROM oss_test_tb;Hasil berikut dikembalikan:
+--------------+---------------------+---------------+----------------+----------------------+ | id | user_name | age | city | access_url | +--------------+---------------------+---------------+----------------+----------------------+ | 1 | tick | 32 | shanghai | http://example.com | +--------------+---------------------+---------------+----------------+----------------------+ Returned rows: [1], Time elapsed: [183ms]
Metode 2: Fungsi tabel
Enterprise atau Community-compatible (22.8 atau yang lebih baru)
-
Masuk ke database.
-
Masuk ke konsol ApsaraDB for ClickHouse.
-
Di halaman Clusters, klik tab Clusters of Community-compatible Edition atau Enterprise Edition Clusters, lalu klik ID kluster target.
-
Di halaman Cluster Information, klik Log On to Database di pojok kanan atas.
-
Di kotak dialog Connect to Instance, masukkan akun dan kata sandi database, lalu klik Log On.
-
-
Gunakan fungsi tabel untuk mengkueri data.
Sintaksnya sebagai berikut:
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 detailnya, lihat Deskripsi 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')Hasil berikut dikembalikan:
+--------------+---------------------+---------------+----------------+----------------------+ | id | user_name | age | city | access_url | +--------------+---------------------+---------------+----------------+----------------------+ | 1 | tick | 32 | shanghai | http://example.com | +--------------+---------------------+---------------+----------------+----------------------+ Returned rows: [1], Time elapsed: [183ms]
Kompatibel Komunitas (21.8 atau lebih lama)
-
Masuk ke database.
-
Masuk ke konsol ApsaraDB for ClickHouse.
-
Di halaman Clusters, klik tab Clusters of Community-compatible Edition, lalu klik ID kluster target.
-
Di halaman Cluster Information, klik Log On to Database di pojok kanan atas.
-
Di kotak dialog Connect to Instance, masukkan akun dan kata sandi database, lalu klik Log On.
-
-
Gunakan fungsi tabel untuk mengkueri data.
Sintaksnya sebagai berikut:
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 detailnya, lihat Deskripsi 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');Hasil berikut dikembalikan:
+--------------+---------------------+---------------+----------------+----------------------+ | 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 22.8 atau lebih baru
Saat mengekspor atau menulis data ke OSS, Anda harus mengatur s3_truncate_on_insert=1 atau s3_create_new_file_on_insert=1. Jika tidak ada parameter yang diatur atau keduanya diatur ke 0, operasi akan gagal jika file sudah ada di jalur tujuan.
-
s3_truncate_on_insert=1: ApsaraDB for ClickHouse memeriksa apakah file sudah ada di jalur tujuan.-
Jika file sudah ada, ClickHouse menimpa file yang ada dengan data baru.
-
Metode ini cocok untuk ekspor atau penulisan overwrite penuh. Namun, harap berhati-hati karena operasi ini menghapus data asli.
-
-
s3_create_new_file_on_insert=1: ClickHouse memeriksa apakah file sudah ada di jalur tujuan.-
Jika file sudah ada, ClickHouse membuat file baru di direktori tersebut dan menulis data ke dalamnya. File baru diberi nama dengan pola berikut:
nama file target + nomor urut (dimulai dari 0 dan bertambah 1) + nama format file.Sebagai contoh, jika file target adalah
test.csv, operasi pertama membuattest0.csvdan operasi kedua membuattest1.csv. -
Metode ini cocok untuk ekspor atau penulisan inkremental dan menghindari penimpaan data yang sudah ada.
-
Edisi Kompatibel Komunitas 21.8 atau lebih lama
Saat mengekspor atau menulis data, hanya satu file OSS yang digunakan. Data baru menimpa isi file asli. Harap berhati-hati.
Langkah 1: Masuk ke database
-
Masuk ke konsol ApsaraDB for ClickHouse.
-
Di halaman Clusters, klik tab Clusters of Community-compatible Edition atau Enterprise Edition Clusters, lalu klik ID kluster target.
-
Di pojok kanan atas halaman Cluster Information, klik Log On to Database.
-
Di kotak dialog Connect to Instance, masukkan akun dan kata sandi database, lalu klik Log On.
Langkah 2: (Opsional) Siapkan data untuk diekspor
Jika Anda perlu menyiapkan data sampel untuk diekspor dari ApsaraDB for ClickHouse ke OSS, ikuti langkah-langkah berikut.
Jika Anda sudah memiliki data untuk diekspor, lewati langkah ini.
-
Buat tabel berdasarkan edisi kluster Anda.
Contoh ini membuat tabel di kluster Community-compatible Edition single-replica. Jika kluster Anda adalah kluster double-replica yang menjalankan 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; -
Masukkan data sampel.
INSERT INTO test_tb_local VALUES (13, 'tick', 25, 'shanghai', 'http://example.com'); -
(Opsional) Lihat data.
Jalankan pernyataan berikut untuk memverifikasi bahwa data telah dimasukkan.
SELECT * FROM test_tb_local;
Langkah 3: Buat tabel eksternal OSS
Edisi Perusahaan atau Edisi Kompatibel Komunitas 22.8 atau lebih baru
Sintaksnya sebagai berikut:
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>');
Tabel berikut menjelaskan parameter-parameter tersebut.
|
Parameter |
Deskripsi |
Contoh |
|
table_name |
Nama tabel. |
oss_test_tb |
|
col_name1,col_name2 |
Nama kolom. |
user_name |
|
col_type1,col_type2 |
Tipe data kolom. Penting
Skema tabel eksternal OSS harus konsisten dengan data di OSS. |
String |
|
bucket-name |
Nama bucket OSS. |
ck-test-oss |
|
oss-endpoint |
Titik akhir internal untuk mengakses bucket OSS dari instans ECS melalui 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 untuk mengakses data OSS. |
yourAccessKeyID |
|
access-key-secret |
Rahasia AccessKey pengguna RAM untuk mengakses data OSS. Anda dapat menggunakan AccessKey yang sudah ada atau membuat yang baru. Untuk informasi selengkapnya, lihat Buat AccessKey. Penting
Untuk mengurangi risiko kebocoran AccessKey, rahasia AccessKey hanya ditampilkan saat Anda membuatnya dan tidak dapat diambil kembali nanti. Pastikan Anda menyimpan rahasia AccessKey dengan aman. |
yourAccessKeySecret |
|
file-format-name |
Format objek. Penting
Nilainya harus berupa format file case-sensitive yang didukung oleh ClickHouse. Untuk informasi selengkapnya, lihat format file yang didukung oleh ClickHouse. |
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 21.8 atau lebih lama
Sintaksnya sebagai berikut:
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>');
Tabel berikut menjelaskan parameter-parameter tersebut.
|
Parameter |
Deskripsi |
Contoh |
|
table_name |
Nama tabel. |
oss_test_tb |
|
col_name1,col_name2 |
Nama kolom. |
user_name |
|
col_type1,col_type2 |
Tipe data kolom. Penting
Skema tabel eksternal OSS harus konsisten dengan data di OSS. |
String |
|
oss-endpoint |
Titik akhir internal untuk mengakses bucket OSS dari instans ECS melalui 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 untuk mengakses data OSS. |
yourAccessKeyID |
|
access-key-secret |
Rahasia AccessKey pengguna RAM untuk mengakses data OSS. Anda dapat menggunakan AccessKey yang sudah ada atau membuat yang baru. Untuk informasi selengkapnya, lihat Buat AccessKey. Penting
Untuk mengurangi risiko kebocoran AccessKey, rahasia AccessKey hanya ditampilkan saat Anda membuatnya dan tidak dapat diambil kembali nanti. Pastikan Anda menyimpan rahasia AccessKey dengan aman. |
yourAccessKeySecret |
|
oss-file-path |
Jalur penyimpanan objek, yang biasanya dalam format Catatan
Parameter |
oss://ck-test-oss/test.csv |
|
file-format-name |
Format objek. Penting
Nilainya harus berupa format file case-sensitive yang didukung oleh ClickHouse. Untuk informasi selengkapnya, lihat format file yang didukung oleh ClickHouse. |
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
Gunakan pernyataan INSERT INTO pada tabel eksternal OSS untuk mengekspor atau menulis data ke OSS. Untuk detail sintaksis, lihat INSERT INTO.
Ekspor data ClickHouse
Edisi Perusahaan atau Edisi Kompatibel Komunitas 22.8 atau lebih baru
-
Ekspor overwrite penuh (ekspor data ke OSS dan timpa data yang ada).
INSERT INTO oss_test_tb SETTINGS s3_truncate_on_insert = 1 SELECT * FROM test_tb_local; -
Ekspor inkremental (ekspor data ke OSS tanpa menimpa data yang ada).
INSERT INTO oss_test_tb SETTINGS s3_create_new_file_on_insert = 1 SELECT * FROM test_tb_local;Operasi ini membuat file baru di bucket OSS. File baru diberi nama mengikuti pola berikut:
nama file target + nomor urut (dimulai dari 0 dan bertambah 1) + nama format file.Misalnya, jika nama file target yang Anda tentukan saat membuat tabel eksternal OSS adalah
test.csv, maka nama file baru adalahtest0.csv. Jika operasi tersebut dijalankan kembali, nama file barunya menjaditest1.csv. Anda dapat menggunakan Konsol OSS untuk melihat file-file tersebut.
Edisi Kompatibel Komunitas 21.8 atau lebih lama
Mengekspor data ApsaraDB for ClickHouse ke OSS menimpa data yang ada. Harap berhati-hati.
INSERT INTO oss_test_tb SELECT * FROM test_tb_local;
Tulis data
Edisi Perusahaan atau Edisi Kompatibel Komunitas 22.8 atau lebih baru
-
Tulis data baru ke OSS dan timpa data yang 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 tanpa menimpa data yang ada.
INSERT INTO oss_test_tb SETTINGS s3_create_new_file_on_insert = 1 VALUES (14, 'tick', 25, 'shanghai', 'http://example.com');Operasi ini membuat file baru di bucket OSS. File baru diberi nama mengikuti pola berikut:
nama file target + nomor urut (dimulai dari 0 dan bertambah 1) + nama format file.Misalnya, jika nama file target yang Anda tentukan saat membuat tabel eksternal OSS adalah
test.csv, maka nama file baru adalahtest0.csv. Jika operasi tersebut dijalankan kembali, nama file barunya menjaditest1.csv. Anda dapat menggunakan Konsol OSS untuk melihat file-file tersebut.
Edisi Kompatibel Komunitas 21.8 atau lebih lama
Menulis data dari ApsaraDB for ClickHouse ke OSS menimpa data yang ada. Harap berhati-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 Object Storage Service (OSS) sebagai penyimpanan perantara untuk migrasi data, Anda juga perlu mengimpor data dari OSS ke kluster tujuan. Untuk informasi selengkapnya, lihat Impor data dari OSS.