(36)...clickhouse
IT云清
技术专家,团队主管,Apache Seata Committer,公众号:java4all
展开
-
ClickHouse系列--集群建表的坑
在集群建表时,如果多个节点都顺利,建表后提示如下:但是偶尔会出现超时情况,如下:由于108节点超时,导致节点未建表成功,而且根据观察,也没有重试机制。此时需要在任何一个节点,再重新执行一次ddl语句,才会成功。...原创 2021-09-01 11:59:50 · 1595 阅读 · 0 评论 -
ClickHouse系列--常用sql语句
1.删除表//删除本地表DROP table ti.java4al_base on cluster ck;//删除分布式表DROP table ti.java4al_base_all on cluster ck;2.添加字段-- 添加字段 本地表ALTER table ti.java4al_base ON CLUSTER ck add column IF NOT EXISTS `challengerType` Nullable(String) COMMENT '是否是挑战者' AFTER原创 2021-08-17 16:28:20 · 1523 阅读 · 1 评论 -
Code: 62, e.displayText() = DB::Exception: Syntax error (Multi-statements are not allowed): failed a
问题:clickhouse查询语句抛出一下异常:e.displayText() = DB::Exception: Syntax error (Multi-statements are not allowed):具体堆栈如下:### The error may involve defaultParameterMap### The error occurred while setting parameters### SQL: SELECT count(raba.id) FROM aabbccd.te原创 2021-08-12 13:58:54 · 9168 阅读 · 1 评论 -
ClickHouse系列--java ClickHouse map
如何在java中通过jdbc的方式向clickhouse中写入map类型?依赖版本: <dependency> <groupId>ru.yandex.clickhouse</groupId> <artifactId>clickhouse-jdbc</artifactId> <version>0.3.0</version>原创 2021-08-10 17:55:02 · 1433 阅读 · 0 评论 -
ClickHouse系列--Exception: Memory limit (total) exceeded: would use
批量写入clickhouse出错,内存溢出,报错信息如下:2021-07-20 13:59:14.291 INFO 12719 --- [pool-9-thread-1] c.t.r.c.c.consumer.ClickHouseConsumer : ------>>>>>>The 10 times write,Receive messages size is 745932021-07-20 13:59:24.401 INFO 12719 --- [pool原创 2021-07-20 14:06:36 · 5185 阅读 · 0 评论 -
ClickHouse系列--ClickHouse null值的处理与分析
clickhouse中对于null的处理和其他数据库有点差别。测试分析如下:1.建表语句CREATE TABLE default.testeasy( `sequenceId` UInt32, `tableaId` String, `eventOccurTime` DateTime, `abnormalTags` String COMMENT '标签', `isDeleted` UInt8 COMMENT '是否删除:1删除,0未删除.无boolean类原创 2021-07-16 15:01:56 · 11271 阅读 · 6 评论 -
ClickHouse系列--Too many partitions for single INSERT block (more than 100)
批量插入时,这一批数据是按照天分区的,一批数据里的日期跨度为一年,也就是单次插入可能产生365个分区,导致后台异步合并数据出现问题。解决方案:单批次写入数据,要控制分区数量。exception, code: 252, host: 10.58.10.243, port: 8123; Code: 252, e.displayText() = DB::Exception: Too many partitions for single INSERT block (more than 100). The limi原创 2021-07-14 11:31:00 · 2934 阅读 · 0 评论 -
ClickHouse系列--BalancedClickhouseDataSource实现
/** * 提供负载均衡能力的datasource实现 */public class BalancedClickhouseDataSource implements DataSource { private static final Logger log = LoggerFactory.getLogger(BalancedClickhouseDataSource.class); private static final Pattern URL_TEMPLATE = Pattern.co原创 2021-07-08 10:30:18 · 3452 阅读 · 2 评论 -
clickhouse时间处理问题纳秒
clickhouse写入时间后查询出来不对。差了上百年。场景:java中的long类型存入clickhouse中的long类型字段,作为时间。查询时,通过函数把long类型转化成时间格式。然后发现日期差了几十年。这是存入数据库的long值1625471075301。在数据库中查询时发现:这里成了2106年。问题原因:前面java中存入的long值,其实带了毫秒值。也就是long的后三位,是秒之后的,直接这么转,等于是时间戳多出来三位数。21.5.6.6版本目前转化函数中,还未发现能自原创 2021-07-05 16:07:17 · 1926 阅读 · 0 评论 -
ClickHouse系列--Mutations操作:数据的删除和修改
clickhouse提供了update和delete的删除能力,但是和常规的例如mysql,redis这种立即见效的能力不一样。在clickhouse中这种操作称为mutation操作。1.mutation操作有3个特点:1.mutation操作是一个很重的操作,适合批量删除或者修改,而不是一条一条的;2.不支持事务,请求提交执行后立即会产生影响(这个影响和立即生效是有区别的),无法回滚;3.是一个异步的生效过程,不会实施生效。所以修改完数据后想立即查询到最新的数据是不行的。2.示例ALTE原创 2021-06-20 15:03:12 · 6524 阅读 · 0 评论 -
ClickHouse系列--一级索引原理解读
MergeTree的主键使用PRIMARY KEY定义,主键定义好后,根据index_granularity间隔,为数据生成一级索引保存在primary.idx文件中,索引数据按照PRIMARY KEY排序。1.稀疏索引primary.idx文件中的一级索引采用稀疏索引实现。稀疏索引和稠密索引的区别是:稠密索引的每一行索引标记,都会对应到一行具体的数据记录,8192数据,就是8192行索引;稀疏索引的每一行索引标记,对应的是一段数据记录。比如8192行数据,可能对应的只有一行索引。优点:稀疏索原创 2021-06-05 09:43:19 · 1584 阅读 · 0 评论 -
No macro ‘uuid‘ in config while processing substitutions in
clickhouse建表时出现以下异常:DB::Exception: No macro 'uuid' in config while processing substitutions in '/clickhouse/tables/{uuid}/{shard}' at '20' or macro is not supported here (version 20.8.3.18)DB::Exception: No macro ‘uuid’ in config while processing substi原创 2021-06-01 13:53:23 · 2529 阅读 · 0 评论 -
ClickHouse系列--分布式表写入流程
摘要:在向ck集群写入数据的过程,有2种方案,一种是直接写本地表,一种是通过Distributed表引擎写分布式表。本文介绍写分布式表的核心流程。先假定场景和统一命名:我们假设有cluster1,和cluster2两个集群。本地表log_local对应的分布式表为log_all。假设请求A进来后请求到cluster1的分布式表log_all,要写入100条数据。1.第一个分片写本地数据1)cluster1节点接收到请求后,会根据分片键/分片表达式计算这100条数据的分片划分,一部分应该到clus原创 2021-05-28 22:29:30 · 3204 阅读 · 0 评论 -
ClickHouse系列--分布式查询多副本的路由规则
简介:在集群情况下,数据写入可以有写本地表和写分布式表2种方案,但是面向集群查询时,只能通过Distributed表引擎实现。本文主要介绍分布式查询多副本的路由规则。该配置项为:load_balance=random/nearest_hostname/in_order/first_or_random1.多副本的路由规则查询数据时,如果一个分片shard有多个副本repIica,那么Distributed表引擎就需要面对副本选择的问题,选择查询究竟在哪个副本上执行。ck的负载均衡算法有以下四种:ra原创 2021-05-26 21:59:36 · 1257 阅读 · 0 评论 -
ClickHouse系列--数据读写方案
1.概念1.分布式表分布式表,是一个逻辑上的表,是一些本地表的逻辑视图。Distributed表引擎是分布式表的实现,它自身不存储任何数据,数据都分散存储在分片上,能够自动路由请求至集群中的各个节点,然后进行汇总后返回给用户,Distributed表引擎需要和其他数据表引擎一起协同工作。一张分布式表底层会对应多个本地分片数据表,由具体的分片表存储数据,分布式表与分片表是一对多的关系。2.本地表实际存储数据的表。2.读数据方案读数据一般都是直接读分布式表。1.分布式引擎会自动从集群中的多个服原创 2021-05-18 14:43:48 · 1921 阅读 · 0 评论 -
ClickHouse系列--项目方案梳理
1.整体流程三条路线:1.api–>kafka–>clickhouse问题:数据无法展平和清洗,难以加工,适合a.b等简单json格式。pass2.api展平–>kafka–>clickhouse问题:api需要改造,数据需要写两套格式,要额外写一套ck的格式,侵入大。pass2.kafka–>roc–>clickhouse优点:roc中进行数据清洗,展平,格式化等操作;积压数据,批量写入;对之前业务完全无侵入无影响;roc中需要实现原创 2021-05-17 20:13:38 · 470 阅读 · 4 评论 -
ClickHouse系列--ClickHouse特点
1.OLAP场景的特点读多于写不同于事务处理(OLTP)的场景,比如电商场景中加购物车、下单、支付等需要在原地进行大量insert、update、delete操作,数据分析(OLAP)场景通常是将数据批量导入后,进行任意维度的灵活探索、BI工具洞察、报表制作等。数据一次性写入后,分析师需要尝试从各个角度对数据做挖掘、分析,直到发现其中的商业价值、业务变化趋势等信息。这是一个需要反复试错、不断调整、持续优化的过程,其中数据的读取次数远多于写入次数。这就要求底层数据库为这个特点做专门设计,而不是盲目采用传统转载 2021-05-14 15:15:07 · 1193 阅读 · 0 评论 -
ClickHouse系列--消费kafka数据
1.使用方式主要是使用ClickHouse的表引擎。CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]( name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1], name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2], ...) ENGINE = Kafka()SETTINGS kafka_broker转载 2021-05-14 11:30:59 · 1270 阅读 · 0 评论 -
ClickHouse系列1--入门
1.配置文件服务器配置文件位于/etc/clickhouse-server/。config.xml中的<path>元素,它决定了数据存储的位置,因此它应该位于磁盘容量的卷上;默认值是/var/lib/clickhouse/。如果你想调整配置,直接编辑config是不方便的。考虑到它可能会在将来的包更新中被重写。建议重写配置元素的方法是在配置中创建config.d文件夹,作为config.xml的重写方式。2.启动clickhouse-server安装后不会自动启动,可以如下方式:sudo原创 2021-05-13 14:58:08 · 292 阅读 · 0 评论