clickhouse之jdbc使用的一些经验和问题
发布于 4 个月前 作者 fasoal 579 次浏览 来自 实战经验
  • 我先说下我用clickhouse的一些业务背景 我是做BI得,clickhouse的一些特性非常符合我们的业务场景 用clickhouse的第一个项目是对一些离线数据的BI展示 主要分为几点
    1. 每天配置定时将clickhouse的表数据清空,并灌入新的业务数据
    2. 对clickhouse的数据进行实时的查询
  • 说下我得clickhouse部署情况 四台机器:两台做得分布式查询,另外两台做得复制表
  • jdbc在clickhouse集群中的使用 clickhouse在复制表中几乎所有得ddl命令都不支持复制,除alter之外 也就是说create drop等命令都必须在所有机器上都执行 为了方便说明 我把上述四台机器编号为 1_1, 1_2 ,2_1,2_2 其中1_1和2_1为查询节点,1_2和2_2为1_1和2_1得复制节点
    1. 创建本地表 得在四台机器上都执行 statement.execute("create table IF NOT EXISTS " + tableName + “(date Date,a String,b String) ENGINE = ReplicatedMergeTree(’/clickhouse_perftest/tables/{shard}/” + tableName + “’, ‘{replica}’,date, (a,b), 8192)”);
    2. 创建分布式表 在查询节点(1_1和2_1)执行 statement.execute("CREATE TABLE IF NOT EXISTS " + tableName + “_all AS test ENGINE = Distributed(bip_ck_cluster, configReport,” + tableName + “,rand())”);
    3. 插入数据 可以选择插入分布式表(1_1或2_1)
      insert into " + tableName + "_all values(?,?,?) 会造成本地表数据不均衡 也可以轮询插入查询节点得本地表(1_1和2_1)
      nsert into " + tableName + "values(?,?,?) 数据均衡
    4. 删除数据 在本地表中执行(1_1和2_1)
      statement.execute("ALTER table " + tableName + " DROP PARTITION ‘201801’ "); 注:只允许按月删除,分布式表不能执行删除, 还有就是通过jdbc删除必须有default用户而且密码必须为空才能成功,如果有人解决这个问题,可以告诉我
    5. 删除表 得在四台机器上都执行
  • 感谢 特别感谢JackpGao,是看到他的演讲才知道这么好的产品,看他的博客和在他得帮助下,才搭建起的集群
回到顶部