栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

ClickHouse插入数据重复

ClickHouse插入数据重复

使用spark,多线程写入clickhouse

第一次建表时设置ENGINE = MergeTree,PARTITION BY和ORDER BY字段相同。
最终表中的数据发生重复。

CREATE TABLE dev.test_risk_full
(
)
ENGINE = MergeTree
PARTITION BY ORGCD
ORDER BY ID
SETTINGS index_granularity = 8192;

第二次建表时,设置如下,发现虽然无重复数据,但是数据插入速度下降明显

CREATE TABLE dev.test_risk_full
(
)
ENGINE = ReplaceMergeTree
PRIMARY KEY ID
PARTITION BY ORGCD2
ORDER BY ID
SETTINGS index_granularity = 8192;

查看资料后,了解到
PRIMARY KEY指定的字段是用来创建一级索引,不具有唯一约束性;

PARTITION BY指定的字段是用来进行分区;

ORDER BY指定的字段是对分区内数据进行排序,在ReplaceMergeTree引擎下,会对相邻的重复数据进行删除

ClickHouse MergeTree的分区目录和其他数据库有所不同。MergeTree的分区目录不是在数据表被创建时生成,而是伴随着每一次的数据写入(INSERT INTO)都会生成一份分区目录。在数据导入完成后,ClickHouse通过后台任务将属于相同分区的多个目录合并成一个新的目录。已经存在的旧分区目录不会立即删除,而是在之后的某个时刻通过后台任务被删除(默认设置是8分钟)。

之前用的Hive、Hbase数据库在建表时会定义好分区目录,每次写入的数据会依据分区字段追加到不同的分区中。

暂时没研究明白导致数据重复的原因…

参考资料:
spark数据写入clickhouse mergeTree引擎 数据重复问题
https://blog.csdn.net/subian1261/article/details/115691273

clickhouse分区目录的合并过程原理
https://blog.csdn.net/u011110301/article/details/116600323

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/706262.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号