clickhouse-S3

参考文档

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之间的关系,主要有三种,s3函数,s3表,disks3存储策略,应用场景很多,比如数据备份,数据导出,数据冷热分层,存算分离等,非常值得学习和使用。

准备

需要修改config.xml配置


1.png

1,判断证书文件是否存在 file /etc/pki/tls/certs/ca-bundle.crt
2,添加 <caConfig>/etc/pki/tls/certs/ca-bundle.crt</caConfig>配置。

S3函数

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关键字,否则会写失败
通过s3查看工具,可以看到csv文件成功写入了s3

2.png

需要注意的是,如果多次写同一个文件名,文件信息会被覆盖

read
select * from  s3('endpoint/cdnlog-ckbak-test/cdnlog-s3-test1.csv.gz','AK','SK', 'CSV', 'name String, value UInt32', 'gzip')
3.png

S3表引擎

--创建表
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
--写多条数据
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。

4.png

需要注意的是,多次写入,信息会被覆盖

read
select * from s3_test_t_demo

可以看到


5.png

DiskS3

disks3主要用户存储策略,一般使用在数据存储分层,冷热数据分离等场景。

配置修改

在配置文件cdnlog_storage.xml中 添加如下配置


6.png

重启服务
sudo systemctl restart clickhouse-server

1,新建表&写入数据

--表
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,查看结果
数据写入成功后,可以发现和本地存储使用上无多大的影响,但是读写速度会慢很多

7.png

8.png

总结

S3 大大提高了clickhouse存储能力,但是需要注意的是会减少数据的加载和写入速度。社区也思考使用S3做存算分离的功能。clickhouse的s3功能未来肯定会越来越完善。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容