Impor data dari Object Storage Service (OSS) ke Alibaba Cloud ClickHouse menggunakan mesin tabel atau fungsi tabel untuk mengkueri, menganalisis, dan memproses log.
Prasyarat
-
Aktifkan Object Storage Service (OSS). Untuk informasi selengkapnya, lihat Activate OSS.
-
Buat bucket di wilayah yang sama dengan Alibaba Cloud ClickHouse. Untuk petunjuk cara membuat bucket, lihat Create a bucket.
-
Akun yang digunakan untuk mengakses OSS harus memiliki izin baca pada objek di dalam bucket. Untuk informasi selengkapnya, lihat Overview.
Persiapan data
Simpan data uji berikut sebagai test.csv dan unggah ke OSS. Pemisah kolom default adalah koma (,). Untuk petunjuk pengunggahan, lihat Upload files.
1,yang,32,shanghai,http://example1.com
2,wang,22,beijing,http://example2.com
3,xiao,23,shenzhen,http://example3.com
4,jess,45,hangzhou,http://example4.com
5,jack,14,shanghai,http://example5.com
6,tomy,25,hangzhou,http://example6.com
7,lucy,45,shanghai,http://example7.com
8,tengyin,26,shanghai,http://example8.com
9,wangli,27,shenzhen,http://example9.com
10,xiaohua,37,shanghai,http://example10.com
Langkah-langkah
-
Sambungkan ke kluster Alibaba Cloud ClickHouse. Untuk informasi selengkapnya, lihat Connect to a cluster.
-
Buat tabel lokal bernama
oss_test_tbl_local.Penting-
Skema tabel Alibaba Cloud ClickHouse harus sesuai dengan skema tabel eksternal OSS dan format data di OSS. Untuk mencegah kegagalan penguraian dan gangguan kluster, tangani bidang null dengan hati-hati.
-
Pilih pernyataan CREATE TABLE yang sesuai berdasarkan konfigurasi replika kluster Anda. Anda dapat melihat konfigurasi replika di halaman Cluster Information pada bagian Cluster Properties di Konsol.
-
Anda dapat memilih mesin tabel berdasarkan kebutuhan bisnis Anda. Untuk informasi selengkapnya, lihat Table engines.
Edisi satu replika
CREATE TABLE oss_test_tbl_local ON CLUSTER default ( id UInt8, user_name String, age UInt16, city String, access_url String ) ENGINE = MergeTree() ORDER BY id;Edisi dua replika
CREATE TABLE oss_test_tbl_local ON CLUSTER default ( id UInt8, user_name String, age UInt16, city String, access_url String ) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{database}/{table}/{shard}', '{replica}') ORDER BY id; -
-
(Opsional) Buat tabel terdistribusi bernama
oss_test_tbl_distributed.CatatanBuat tabel terdistribusi jika Anda ingin mendistribusikan data ke semua tabel lokal di kluster.
CREATE TABLE oss_test_tbl_distributed ON CLUSTER default ( id UInt8, user_name String, age UInt16, city String, access_url String ) ENGINE = Distributed(default, default, oss_test_tbl_local, rand()); -
Impor data dari OSS ke Alibaba Cloud ClickHouse.
Alibaba Cloud ClickHouse mendukung dua metode untuk mengimpor data dari OSS: mesin tabel dan fungsi tabel.
PentingPilih pernyataan yang sesuai berdasarkan versi kluster Anda. Anda dapat melihat versinya di halaman Cluster Information pada bagian Cluster Properties di Konsol.
Metode 1: Gunakan mesin tabel
Metode 2: Gunakan fungsi tabel
-
Kueri tabel terdistribusi
oss_test_tbl_distributeduntuk memverifikasi impor data.SELECT * FROM oss_test_tbl_distributed;Hasil yang diharapkan:
┌─id─┬─user_name─┬──age──┬───city─────┬─────access_url────────┐ │ 1 │ yang │ 32 │ shanghai │ http://example1.com │ │ 2 │ wang │ 22 │ beijing │ http://example2.com │ │ 3 │ xiao │ 23 │ shenzhen │ http://example3.com │ │ 4 │ jess │ 45 │ hangzhou │ http://example4.com │ │ 5 │ jack │ 14 │ shanghai │ http://example5.com │ │ 6 │ tomy │ 25 │ hangzhou │ http://example6.com │ │ 7 │ lucy │ 45 │ shanghai │ http://example7.com │ │ 8 │ tengyin │ 26 │ shanghai │ http://example8.com │ │ 9 │ wangli │ 27 │ shenzhen │ http://example9.com │ │ 10 │ xiaohua │ 37 │ shanghai │ http://example10.com │ └────┴───────────┴───────┴────────────┴───────────────────────┘
Pencocokan wildcard untuk jalur penyimpanan OSS
Untuk menyederhanakan analisis beberapa file kecil yang menggunakan konvensi penamaan yang sama, parameter oss-file-path mendukung wildcard berikut:
-
*: Mencocokkan nama file atau direktori apa pun. Misalnya,/dir/*mencocokkan semua file di direktori/dir. -
{x,y,z}: Mencocokkan nilai apa pun yang tercantum dalam tanda kurung kurawal. Misalnya,file_{x,y,z}mencocokkanfile_x,file_y, ataufile_z. -
{num1..num2}: Mencocokkan nilai apa pun dalam rentang yang diperluas darinum1hingganum2. Misalnya,file_{1..3}mencocokkanfile_1,file_2, danfile_3. -
?: Mencocokkan satu karakter apa pun. Misalnya,file_?mencocokkanfile_a,file_b,file_c, dan seterusnya.
Contoh
File yang diunggah menggunakan struktur direktori berikut.
oss://testBucketName/
doc-data/
oss-import/
small_files/
access_log_csv_1.txt
access_log_csv_2.txt
access_log_csv_3.txt
Contoh:
-
oss://testBucketName/doc-data/oss-import/small_files/*
-
oss://testBucketName/doc-data/oss-import/small_files/access*
-
oss://testBucketName/doc-data/oss-import/small_files/access_log_csv_{1,2,3}.txt
-
oss://testBucketName/doc-data/oss-import/*/access_log_csv_{1,2,3}.txt
-
oss://testBucketName/doc-data/oss-import/*/*
-
oss://testBucketName/doc-data/oss-import/*/access_log_csv_{1..3}.txt
-
oss://testBucketName/doc-data/oss-import/*/access_log_csv_?.txt