自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(114)
  • 资源 (1)
  • 收藏
  • 关注

原创 druid整合clickhouse、hive数据源

【代码】druid整合clickhouse、hive数据源。

2023-05-18 18:50:31 1565

原创 flink异步io调用接口

在清洗事件的时候,需要调用接口来处理,我是直接一个ProcessFunction,来一条处理一条。问题就是出现请求接口的process反压的情况。明明接口的qps能支持很高,时延也低,居然还反压。然后我就看看flink官网,可以使用异步的方式调用:

2023-05-12 18:48:41 1543

原创 clickhouse 上下线表

下线:DETACH TABLE|VIEW|DICTIONARY [IF EXISTS] [db.]name [ON CLUSTER cluster] [PERMANENTLY]上线:ATTACH TABLE|VIEW|DICTIONARY [IF EXISTS] [db.]name [ON CLUSTER cluster] [PERMANENTLY]笔者删表喜欢直接drop table,最近遇到drop表时,表正在被写着或者其他操作,从而导致删表失败,...

2022-08-03 10:19:40 2053

原创 clickhouse(19) mysql database映射

1.背景业务中需要使用mysql库映射,在clickhouse中查询mysql的元数据2.建库语句CREATE DATABASE database_name on cluster ck_clusterENGINE = MySQL('ip:host', 'database', 'user', 'password')SETTINGS mysql_datatypes_support_level = '';...

2022-05-25 15:09:11 1078 2

原创 clickhouse优缺点总结

1.优点数据按列存储,非常适合聚合计算。数据压缩空间大,减少io传输,但数据的解压缩需要消耗cpu。索引是类似跳表结构,并不是mysql的b树结构,不需要满足最左原则。写入速度非常快,建议写本地表而不是all表。2.缺点不支持事务,所以不存在隔离级别,所以定位是分析性数据库。不支持高并发,官方建议qps为100,可以通过修改config.xml的max_concurrent_queries配置。采用了并行处理机制,即使一个查询,也会用服务器一半的CPU去执行,所以不能支持高并发场景,默

2022-03-18 14:54:43 11655

原创 ClickHouse(十八)数据有限更新

1.概述使用clickhouse的聚合函数,可以实现数据的有限更新,从而减少使用optimize table带来的性能开销。2.测试数据表CREATE TABLE temp.iop_user_profile_list on cluster ck_cluster( `uid` Int64 COMMENT '用户唯一标识', `reg_time` DateTime COMMENT '注册时间', `nickname` String COMMENT '昵称', `phone

2022-02-21 12:40:26 1695

原创 用户画像(二):明细uid写入clickhouse本地表

1.背景导入uid集合的csv文件到ck中,由于导入文件的uid集合可能过大,写all可能存在阻塞问题,所以改为使用jdbc形式写本地表。2.思路如下是ck普通的一张替换引擎表,当往all写入数据的时候,all表会将你写入的数据,按uid的intHash32的值,取余12来写入到各个分片,如果我们也要写本地表,也可以按照这个方式,将数据hash取余分成12份(笔者的机器是12分片),通过查询system.clusters获取ck各个分片地址,拼接成jdbc的方式,写入到每个分片中。create t.

2022-02-17 18:46:47 1062

原创 ClickHouse sql优化技巧

1.使用分区clickhouse的表,走索引和非索引效率差距很大,在使用一个表进行查询时,必须限制索引字段。避免扫描全表确定索引分区字段,可以用show create table default.ods_user,查看本地表的建表语句,partition by 的字段就是分区字段。如果需要限制的时间和分区字段不是同一个字段时,可以扩大分区字段取数区间,然后再过滤2.distinct 和 group by优先使用group by,distinct满足不了的情况,可以使用group by,如果c

2022-01-18 14:51:15 4173 2

原创 用户画像(一):clickhouse AggregateFunction(groupBitmap, UInt64)

1.groupBitmap用于存储UInt64数值,且自动去重,这对于我们存储uid非常的适合。2.使用通过配置宽表,我们可以得出一些基本的画像规则,用来制定一些常用的标签属性,如性别,地理位置,星座等。--字符型标签select uid, case when birthday in ('1970-01-01', '1990-03-21', '2000-01-01') then '未知' when birthday >= toDate

2021-12-16 16:53:11 2121 1

原创 springboot hbase

1.添加依赖<hbase.version>2.2.4</hbase.version> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-shaded-client</artifactId> <version>${hbase.version}</ve

2021-12-16 10:25:46 3057

原创 flink 四 kafka sink mysql

1 maven依赖 <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> <version>2.1.0.RELEASE</version> </dependency>

2021-11-29 18:41:23 1804

原创 ClickHouse AggregatingMergeTree

1.介绍该表引擎继承自MergeTree,可以使用 AggregatingMergeTree 表来做增量数据统计聚合。如果要按一组规则来合并减少行数,则使用 AggregatingMergeTree 是合适的。AggregatingMergeTree是通过预先定义的聚合函数计算数据并通过二进制的格式存入表内。是SummingMergeTree的加强版,SummingMergeTree能做的是对非主键列进行sum聚合,而AggregatingMergeTree则可以指定各种聚合函数。2.建表语句CRE

2021-10-14 15:41:23 1279

原创 ClickHouse SummingMergeTree

1.介绍求和引擎继承自 MergeTree。区别在于,当合并 SummingMergeTree 表的数据片段时,ClickHouse 会把所有具有相同主键的行合并为一行,该行包含了被合并的行中具有数值数据类型的列的汇总值。如果主键的组合方式使得单个键值对应于大量的行,则可以显著的减少存储空间并加快数据查询的速度。2.建表语句CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]( name1 [type1] [DEF

2021-10-13 11:43:09 589

原创 synchronizedList和CopyOnWriteArrayList

1.synchronizedListsynchronizedList能把所有 List 接口的实现类转换成线程安全的List,相比 Vector 有更好的扩展性和兼容性 public void test(){ ArrayList<String> list = new ArrayList<>(); List<String> synchronizedList = Collections.synchronizedList(list);

2021-09-18 11:23:22 537

转载 DDD(领域驱动设计)总结

基本概念:领域驱动设计(简称 ddd)概念来源于2004年著名建模专家eric evans发表的他最具影响力的书籍:《domain-driven design –tackling complexity in the heart of software》(中文译名:领域驱动设计—软件核心复杂性应对之道)一书。,书中提出了“领域驱动设计(简称 ddd)”的概念。领域驱动设计一般分为两个阶段:以一种领域专家、设计人员、开发人员都能理解的“通用语言”作为相互交流的工具,在不断交流的过程中发现和挖出一些主要

2021-08-27 17:01:34 435

转载 ClickHouse分布式IN & JOIN 查询的避坑指南

当数据表包含多个分片的时候,我们需要将普通的本地查询转换为分布式查询。当然,这个转换动作是不需要用户自己进行的,在ClickHouse里面会由Distributed表引擎代劳。Distributed表引擎的定位就好比是一个分表的中间件,它本身并不存储数据,而是分片的代理,能自动的将SQL查询路由到每个分片。对于分片概念、定义方式以及相关表引擎作用等内容,这里就不再赘述了,我在ClickHouse这本书中对它们都有过详细的论述。总而言之,分布式查询是面向Distributed表引擎的,而Distribu

2021-08-12 17:37:44 1668

原创 ClickHouse(十七)轮询写本地表之多分片动态数据源

前言笔者操作的clickhouse集群,配置是24台机、12分片、2副本的,在写入数据

2021-06-22 15:19:23 2537 4

原创 ClickHouse (十六)异常处理总结

DB::Exception: Nested type Array(String) cannot be inside Nullable type (version 20.4.6.53 (official build))原因:字段类型是Nullable(String),在使用一些字符串函数如splitByString,他们对Nullable类型是不支持的,需要转成String。解决的话,使用cast强转一下就行:select splitByString(',',cast(col as String)).

2021-05-10 14:58:12 14700 4

原创 Flink 三 DataStream的各类算子

DataStream的各类算子1 Map:DataStream → DataStream2 flatMap:DataStream → DataStream3 Filter DataStream → DataStream4 KeyBy DataStream → KeyedStream5 Reduce KeyedStream:根据key分组 → DataStream1 Map:DataStream → DataStream遍历数据流中的每一个元素,产生一个新的元素,可以理解为对集合内数据的清洗操作

2021-04-27 13:52:35 494 1

原创 Flink 二 消费kafka数据

flink消费kafka:引入依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.kafka</g

2021-04-23 14:56:35 1802 2

原创 docker+jenkins+maven+gitlab,构建maven项目自动部署远程服务器

1 前言之前组里使用的jenkins太旧,被组员升级之后没法用,无奈之后只能重新搭建一个。说是说自己的岗位是大数据开发,但运维能力不行连开发都做不了。网上的案例都缺这缺那的,要看很多文章才能实现。所以在这里记录一下自己搭建的一个详细的过程,docker里的jenkins镜像最新是2.2773,所以就安装它了。2 安装Jenkinsdocker安装好jenkins非常简单,很容易就搭起来了# 拉取最新的镜像docker pull jenkins/jenkins:lts# 创建映射目录mkdir

2021-04-22 16:28:41 1834 6

原创 Flink 一 环境搭建,输出wordCount

1. Flink环境搭建1.1 Flink版本列表:https://archive.apache.org/dist/flink/1.2 选择最新的1.12.2版本进行安装wget https://archive.apache.org/dist/flink/flink-1.12.2/flink-1.12.2-bin-scala_2.12.tgz1.3 解压安装tar -xzf flink-1.12.2-bin-scala_2.12.tgz./bin/start-cluster.sh检查是否

2021-04-19 11:54:28 313

原创 ClickHouse (十五)解析json数据

背景使用字符串行式保存在ClickHouse的json数据,需要我们解析提取相关字段,将json行转多列。如提取json数据的各个字段的值,以方便查询。WITH '[{"name":"天台","tall":100,"model":"M779011"},{"name":"楼顶","tall":90,"model":"M669011"}]' AS new, 'S123' AS numSELECT new, num┌─new───────────────────

2021-03-02 18:29:39 22073 2

原创 ClickHouse(十四)ClickHouse技术分享ppt

昨天在公司做了ClickHouse的技术分享介绍,给公司的小伙伴们分享了ClickHouse的初认识、特性、使用场景,以及与我们旧数据开发架构的对比。图片很多,民那桑慢慢看超喜欢ClickHouse官网的这两张说明行式与列式储存区别的动图:好了,就介绍到这里吧,继续加油民那桑!...

2021-02-26 13:37:18 3742 8

原创 Spring aop输出注解日志

场景现在的接口开发,都会引用swagger作为接口文档,我们希望在controller被调用的使用,利用@ApiOperation注解的value值,输出接口开始被调用和调用结束的日志,方便在服务器中查看。 @RequestMapping(value = "/testAop", method = RequestMethod.POST) @ApiOperation("测试Aop") public void testAop(){ System.out.println("

2021-02-24 13:52:21 329 1

原创 clickhouse 十三 (操作数据表)

ALTER 仅支持 *MergeTree ,Merge以及Distributed等引擎表。使用MergeTree做测试表:CREATE TABLE test.tmp_uid_info( `uid` Int32, `alias` Int32, `sex` String, `totalDate` Date, `source` String, `name` String)ENGINE = MergeTree()PARTITION BY totalDa.

2021-02-05 16:06:18 2529 1

原创 Springboot:华为云obs文件上传和删除

准备AccessKey:访问密钥SecretKey:访问密钥endPoint:终端节点bucketName:桶1 添加maven依赖<dependency> <groupId>com.huaweicloud</groupId> <artifactId>esdk-obs-java</artifactId> <version>3.19.7</version></dependency&g

2021-01-30 17:40:33 3229 4

原创 ClickHouse 十二 (数据文件导入)

导入文本文件建表# 本地表 CREATE TABLE test.tmp_uid_info( `uid` Int32, `alias` Int32, `sex` String, `totalDate` Date, `source` String, `name` String)ENGINE = ReplicatedMergeTree('/clickhouse/activity/tables/{shard}/tmp_uid_info', '{replic

2021-01-23 16:17:55 13520 9

原创 clickhouse 十一 (MergeTree引擎)

MergeTree引擎介绍MergeTree(合并树)引擎是 clickhouse 中最为先进的表引擎,在写⼊数据时,数据总会以数据⽚段的形式写⼊磁盘,且数据⽚段不可修改。为了避免⽚段过多, clickhouse会通过后台线程,定期合并这些数据⽚段,属于相同分区的数据⽚段,会被合成⼀个新的⽚段。这种数据⽚段往复合并的特点,也正是合并树的名称由来。其主要特征有:存储的数据按照主键排序:通过创建稀疏索引,从而加快数据查询速度数据分区,通过主键指定分区字段支持数据副本支持数据采样列和表的TTL使

2021-01-20 15:23:20 473

原创 ClickHouse 十 (查看后台进程并杀死进程)

ClickHouse自带用于记录系统信息的系统库system,通过processes表,我们可以查看当前连接的进程信息。select query_id,read_rows,total_rows_approx,memory_usage, initial_user,initial_address,elapsed,queryfrom system.processes;# 字段含义# query_id 查询id,# read_rows 从表中读取的行数,# total_rows_app

2021-01-06 17:19:53 6191 1

原创 clickhouse 九(同步kafka数据)

1 步骤kafka作为消息队列通常用来收集各个服务产生的数据,而下游各种数据服务订阅消费数据,本文通过使用clickhouse 自带的kafka 引擎,来同步消费数据。同步步骤:kafka中创建topic,创建消费者并消费该topic(查看消费情况)建立目标表(通常是MergeTree引擎系列),用来存储kafka中的数据;建立kafka引擎表,用于接入kafka数据源;创建Materialized View(物化视图), 监听kafka中的数据并将数据同步到clickhouse的目标表中;

2020-12-30 16:54:16 7883 21

原创 ClickHouse 八(TTL 时效性)

什么是TTL?TTL的意思是Time To Live表示数据的存活时间。由于数据的价值会根据保存的时间成反比,出于存储成本的考虑通常只会保留近一年的数据。而在MergeTree (合并树)引擎中,可以通过设置TTL来轻松管理数据的存活时间,使数据的价值最大化。在ClickHouse 中,TTL可以设置值的生命周期,它既可以为整张表设置,也可以为每个列字段单独设置。表级别的 TTL 还会指定数据在磁盘和卷上自动转移的逻辑。TTL 表达式的计算结果必须是 日期(date) 或 日期时间(datetime),

2020-12-22 20:51:04 4486 1

原创 使用nacos作服务注册中心和配置中心

团队之前使用SpringCloud Netflix来搭建服务,不过由于Netflix开始将Eureka闭源了,而且很久都没更新维护了,所以现在都改用Nacos,使用Nacos做服务发现、配置和管理都很方便。Nacos 环境搭建Nacos官方给出运行环境的要求,需要先满足环境要求才能成功启动NacosNacos 依赖 Java 环境来运行。如果您是从代码开始构建并运行Nacos,还需要为此配置 Maven环境,请确保是在以下版本环境中安装使用:64 bit OS,支持 Linux/Unix/Ma.

2020-12-07 11:51:17 1426 3

原创 clickhouse 七(位图函数)

位图函数用于对两个位图对象进行计算,对于任何一个位图函数,它都将返回一个位图对象,例如and,or,xor,not等。位图对象有两种构造方法。一个是由聚合函数groupBitmapState构造的,另一个是由Array Object构造的。同时还可以将位图对象转化为数组对象。我们使用RoaringBitmap实际存储位图对象,当基数小于或等于32时,它使用Set保存。当基数大于32时,它使用RoaringBitmap保存。这也是为什么低基数集的存储更快的原因。1 位图的构建与转化bitmapBu.

2020-11-30 17:20:51 5188 6

原创 springboot整合hbase-client,实现put,query,delete,exists

1.环境本例使用hbase-client也就是hbase的原生客户端去操作hbase,所需环境有:jdk1.8springboot2.3.4三台Hadoop机器构建的hadoop集群,也可以使用单机项目目录如下:2.添加maven依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifa

2020-11-18 16:29:34 2575

原创 datax将clickhouse数据导入Hbase数据库,详细教程

1.datax介绍:DataX 在大数据量下的同步数据非常之快。DataX 是阿里开源的一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。2.安装下载:# 下载wget http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz# 解压缩,即可完成安装tar -zxvf datax.tar.gz

2020-10-26 21:03:20 2713 7

原创 clickhouse 六(使用mysql表引擎)

1.说明:clickhouse使用mysql表引擎可以与mysql数据库中的数据表建⽴映射,并通过SQL向其发起远程查询或插入数据2.语法规则:引擎定义:CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]( name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1] [TTL expr1], name2 [type2] [DEFAULT|MATERIALIZED|A

2020-10-19 17:49:03 5524 5

原创 neo4j 删除节点及删除节点含有的关系

假设neo4j有以下图节点:1. 删除无关系节点#通过id值删除Lucy节点MATCH (n:Person{name:'Lucy'}) DELETE n#通过name值删除Lucy节点MATCH (n) WHERE id(n) = 13416 DELETE n效果:2.删除指定节点直接的关系在这里如果我们删除含有关系的Steve节点MATCH (n:Person{name:'Steve'}) DELETE n此时就有错误提示,告诉我们先删除该节点含有的关系。Cannot de

2020-10-15 17:30:20 3239

原创 clickhouse 五(分布式表原理解析)

1.Distributed引擎介绍Distributed表引擎是分布式表的代名词,它⾃身不存储任何数据,⽽是作为数据分⽚的透明代理,能够⾃动的路由数据⾄集群中的各个节点,即分布式表需要和其他数据表⼀起协同⼯作。分布式表会将接收到的读写任务,分发到各个本地表,而实际上数据的存储也是保存在各个节点的本地表中。 原理如下图:2.创建分布式表使用on cluster语句在集群的某台机器上创建一下代码,即可在每台机器上创建本地表和分布式表,⼀张本地表对应着⼀个数据分⽚,分布式表通常以本地表加“_al

2020-10-15 11:42:39 8154 9

原创 shell学习笔记

shell学习1.Shell是什么2.Shell解析器3.执行Shell3.1 输出helloworld3.2 输入内容3.3 练习,将输入值写入到文件中4.shell中的变量4.1 常用的环境变量4.2 自定义变量4.3 变量作用域4.4 特殊变量1.Shell是什么Shell的中文意思是贝壳,可以理解为linux内核的一层壳,用户可以利用这层壳来访问操作系统的服务。Shell是一个命令行解释器,它为用户提供了一个向 Linux 内核发送请求以便运行程序的界面系统级程序,用户可以用 Shell 来

2020-10-14 16:46:10 223

ClickHouse官方中文文档.pdf

ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。ClickHouse 架构概述 ClickHouse 是一个真正的列式数据库管理系统(DBMS)。在 ClickHouse 中,数据始终是按列存储的,包括矢量(向量或列块)执行的过程。只要有可能,操作都是基于矢量进行分派的,而不是单个的值,这被称为«矢量化查询执行»,它有利于降低实际的数据处理开销。

2020-06-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除