Anda dapat mengimpor data dari Object Storage Service (OSS) ke ApsaraDB for ClickHouse menggunakan mesin tabel atau fungsi tabel, memungkinkan operasi seperti kueri log, analisis, dan pemrosesan. Topik ini menjelaskan cara mengimpor data dari OSS ke ApsaraDB for ClickHouse.
Prasyarat
-
Layanan OSS telah diaktifkan. Untuk informasi selengkapnya, lihat Aktifkan OSS.
-
Sebuah bucket telah dibuat. Bucket tersebut harus berada di wilayah yang sama dengan kluster ApsaraDB for ClickHouse. Untuk informasi selengkapnya, lihat Buat bucket.
-
Akun yang digunakan untuk mengakses OSS memiliki izin baca pada objek OSS. Untuk informasi selengkapnya, lihat Ikhtisar izin dan kontrol akses.
Persiapan data
Simpan data uji berikut sebagai file bernama test.csv dan unggah file tersebut ke OSS. ApsaraDB for ClickHouse menggunakan koma (,) sebagai pemisah kolom default untuk impor data. Untuk informasi selengkapnya tentang cara mengunggah file, lihat Unggah file.
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
Prosedur
-
Sambungkan ke kluster ApsaraDB for ClickHouse. Untuk informasi selengkapnya, lihat Sambungkan ke kluster.
-
Buat tabel lokal bernama
oss_test_tbl_local.Penting-
Skema tabel ApsaraDB for ClickHouse harus sesuai dengan skema tabel eksternal OSS dan kompatibel dengan format data di OSS. Perhatikan khusus bidang yang dapat bernilai null untuk mencegah pengecualian kluster akibat kegagalan penguraian data.
-
Pilih pernyataan CREATE TABLE yang sesuai berdasarkan konfigurasi replika kluster Anda. Anda dapat melihat konfigurasi replika di bagian Cluster Properties pada halaman Cluster Information di Konsol.
-
Pilih mesin tabel berdasarkan kebutuhan Anda. Untuk informasi selengkapnya tentang mesin tabel, lihat Mesin tabel.
Kluster single-replica
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;Kluster dual-replica
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 dalam koleksi secara bersamaan.
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 ApsaraDB for ClickHouse.
Anda dapat mengimpor data dari OSS ke ApsaraDB for ClickHouse menggunakan mesin tabel atau fungsi tabel.
PentingPilih pernyataan CREATE TABLE yang sesuai berdasarkan versi kluster Anda. Anda dapat melihat versi tersebut di bagian Cluster Properties pada halaman Cluster Information di Konsol.
Metode 1: Impor data menggunakan mesin tabel
Metode 2: Impor data menggunakan fungsi tabel
-
Kueri data di tabel terdistribusi
oss_test_tbl_distributeduntuk memverifikasi bahwa data dari OSS telah diimpor ke ApsaraDB for ClickHouse.SELECT * FROM oss_test_tbl_distributed;Hasil berikut dikembalikan:
┌─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 kabur jalur penyimpanan OSS menggunakan wildcard
OSS sering menyimpan beberapa file kecil yang mengikuti konvensi penamaan yang sama. Untuk menyederhanakan analisis file-file tersebut, parameter oss-file-path mendukung pencocokan kabur dengan karakter wildcard berikut.
-
*: Mencocokkan nama file atau nama folder apa pun. Misalnya,/dir/*mencocokkan semua file di folder/dir. -
{x, y, z}: Mencocokkan salah satu nilai 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 dari num1 hingga num2. Misalnya,file_{1..3}mencocokkanfile_1,file_2, ataufile_3. -
?: Mencocokkan satu karakter apa pun. Misalnya,file_?mencocokkanfile_a,file_b, danfile_c.
Contoh
Struktur folder untuk unggahan adalah sebagai berikut.
oss://testBucketName/
doc-data/
oss-import/
small_files/
access_log_csv_1.txt
access_log_csv_2.txt
access_log_csv_3.txt
Daftar berikut menyediakan beberapa contoh nilai untuk parameter oss-file-path.
-
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