美文网首页
clickhouse-S3

clickhouse-S3

作者: 越狱的灵感 | 来源:发表于2022-06-10 09:12 被阅读0次

    参考文档

    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功能未来肯定会越来越完善。

    相关文章

      网友评论

          本文标题:clickhouse-S3

          本文链接:https://www.haomeiwen.com/subject/lmvjmrtx.html