參考文檔
https://clickhouse.tech/docs/en/sql-reference/table-functions/s3/
https://clickhouse.tech/docs/en/engines/table-engines/integrations/s3/
https://aws.amazon.com/cn/blogs/china/explore-three-ways-to-combine-clickhouse-and-amazon-s3/
前言
clickhouse與s3之間的關(guān)系哎榴,主要有三種逗宜,s3函數(shù),s3表鳄梅,disks3存儲策略,應(yīng)用場景很多未檩,比如數(shù)據(jù)備份戴尸,數(shù)據(jù)導出,數(shù)據(jù)冷熱分層冤狡,存算分離等孙蒙,非常值得學習和使用。
準備
需要修改config.xml配置
1悲雳,判斷證書文件是否存在 file /etc/pki/tls/certs/ca-bundle.crt
2挎峦,添加 <caConfig>/etc/pki/tls/certs/ca-bundle.crt</caConfig>配置。
S3函數(shù)
write
INSERT INTO FUNCTION s3('endpoint/cdnlog-s3-test1.csv.gz','AK','SK', 'CSV', 'name String, value UInt32', 'gzip') VALUES ('cdnlog-data1', 1), ('cdnlog-data2', 2)
注意FUNCTION關(guān)鍵字合瓢,否則會寫失敗
通過s3查看工具坦胶,可以看到csv文件成功寫入了s3
需要注意的是,如果多次寫同一個文件名,文件信息會被覆蓋顿苇。
read
select * from s3('endpoint/cdnlog-ckbak-test/cdnlog-s3-test1.csv.gz','AK','SK', 'CSV', 'name String, value UInt32', 'gzip')
S3表引擎
--創(chuàng)建表
CREATE TABLE default.s3_test_t_demo
(
`dt` Date,
`id` Int64,
`data` String
)
ENGINE = S3('endpoint/cdnlog-ckbak-test/cdnlog-demo1.csv', 'AK', 'SK', 'CSV')
write
--寫多條數(shù)據(jù)
INSERT INTO s3_test_t_demo VALUES (NOW(),1,'CDNLOG_1'),(NOW(),2,'CDNLOG_2'),(NOW(),3,'CDNLOG_3'),(NOW(),4,'CDNLOG_4'),(NOW(),5,'CDNLOG_5'),(NOW(),6,'CDNLOG_6')
通過s3查看工具峭咒,可以看到csv文件成功寫入了s3。
需要注意的是纪岁,多次寫入凑队,信息會被覆蓋。
read
select * from s3_test_t_demo
可以看到
DiskS3
disks3主要用戶存儲策略幔翰,一般使用在數(shù)據(jù)存儲分層漩氨,冷熱數(shù)據(jù)分離等場景。
配置修改
在配置文件cdnlog_storage.xml中 添加如下配置
重啟服務(wù)
sudo systemctl restart clickhouse-server
1遗增,新建表&寫入數(shù)據(jù)
--表
CREATE TABLE cdnlog_disks3_demo1 ( dt Date, id Int64, data String ) ENGINE=MergeTree() PARTITION BY dt ORDER BY (dt, id) SETTINGS storage_policy='cdnlog_s3_policy'
--insert
INSERT INTO cdnlog_disks3_demo1 VALUES (NOW(),1,'WHG1'),(NOW(),2,'WHG2'),(NOW(),3,'WHG3'),(NOW(),4,'WHG4'),(NOW(),5,'WHG5'),(NOW(),6,'WHG6')
2叫惊,查看結(jié)果
數(shù)據(jù)寫入成功后,可以發(fā)現(xiàn)和本地存儲使用上無多大的影響贡定,但是讀寫速度會慢很多赋访。
總結(jié)
S3 大大提高了clickhouse存儲能力,但是需要注意的是會減少數(shù)據(jù)的加載和寫入速度缓待。社區(qū)也思考使用S3做存算分離的功能蚓耽。clickhouse的s3功能未來肯定會越來越完善。