赞
踩
ClickHouse是开元的列式存储数据库(DBMS),主要用于在线处理查询(OLAP),能够使用SQL查询实时生成数据分析报告。
在/etc/security/limits.conf、/etc/security/limits.d/20-nproc.conf这两个文件的末尾加入一下内容:
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072
重启服务器之后生效,可以用ulimit -n
查看是否生效,默认为1024,看是否修改成了添加的内容的数字
修改/etc/selinux/config中的SELINUX=disabled后重启
yum install -y libtool
yum install -y *unixODBC*
rpm包下载地址https://packagecloud.io/Altinity/clickhouse
点击去想要下载的rpm包
下面的是在线下载rpm包,上面的是安装命令,
一共需要下载
/etc/init.d/clickhouse-server restart
# 或者使用systemctl start clickhouse-server
客户端连接工具:
dbeaver
连接时候回报错,因为dbeaver 连接clickhouse端口是8123
而clickhouse 命令:clickhouse-client 连接的地址是:localhost:9000 端口
此时需要对config.xml
配置: <listen_host>::</listen_host>
# 卸载及删除安装文件(需root权限)
yum list installed | grep clickhouse
yum remove -y clickhouse-common-static
yum remove -y clickhouse-server-common
rm -rf /var/lib/clickhouse
rm -rf /etc/clickhouse-*
rm -rf /var/log/clickhouse-server
config.xml配置文件在clickhouse-server下,一般在/etc/clickhouse-server
目录下,配置文件中有log日志的路径,可通过搜索logger节点
clickhouse-client -u username --password='password'
–host ,-h :服务端的host名称
–port :连接的端口号,默认是9000
–user -u :用户名,默认值为default
–password :密码,默认值空字符串
和MySQL的数据类型对比
MySQL | clickhouse | 长度无符号 | 长度有符号 |
---|---|---|---|
byte | Int8 | -2^(n-1) ~ 2 ^(n-1) -1 | 0 ~ 2^(n-1) -1 |
short | Int16 | ||
int | Int32 | ||
long | Int64 | ||
varchar | String | ||
timestamp | DateTime | ||
float | Float32 | ||
double | Float64 | ||
boolean | 无 | ||
有符号就是在整形Int前面加上U,如无符号的Int8对应有符号的UInt8,取值范围分别是-128 ~ 127 和0 ~ 255 |
CREATE DATABASE 数据库名;
重要引擎
可以实时读取kafka主题中数据,并保存到表中
CREATE TABLE 数据库名.队列表名(列名 数据类型) ENGINE = Kafka SETTINGS kafka_broker_list = ‘ip:port’, kafka_topic_list = ‘主题名’, kafka_group_name = ‘消费组名’, kafka_format = ‘JSONEachRow’, kafka_num_consumers = 1;
必要参数
非必要参数
创建物化视图,用于从同步表向数据表同步内容
CREATE MATERIALIZED VIEW 数据库名.视图名 TO 数据库名.创建过得表名 AS SELECT 列字段 from 数据库 名.创建过的队列名;
步骤
最终终端查询都是查的MergeTree引擎创建的表
修改表中的列是可以通过先删除再重建即可,因为此种引擎的表不会保存数据,不会导致数据丢失
ClickHouse中最强大的表引擎当属MergeTree(合并树)及该系列(*MergeTree)中的其他引擎。
MergeTree引擎系列的基本理念如下。当你有巨量数据要插入表中,你要高效的一批一批写入数据片段,并希望这些数据片段在后台按照一定规则合并,相比在插入时不断修改数据进存储,这种策略会高效很多。
特点如下:
创建表
CREATE TABLE 数据库名.表名 (列名 数据类型) ENGINE =MergeTree() PARTITION BY toYYYYMM(log_time) ORDER BY (log_time) SETTINGS index_granularity=8192;
和MySQL新增列一样的指令,不同点事默认为空字符串的话用DEFAULT ‘’ ,使用单引号,也可以不加
ALTER TABLE 库名.表名 ADD COLUMN 列名 数据类型 DEFAULT ‘’;
ALTER TABLE 库名.表名 DROP COLUMN 列名;
ALTER TABLE table_name UPDATE column1 = expr1 [, ...] WHERE filter_expr
首先查看异常日志,一般在clickhouse目录下的clickhouse-server.err.log中,
如果服务器挂了重启服务器导致消费不到kafka数据则需要访问一次clickhouse的数据
UNKNOWN
,一般是配置文件出错了,只需把改正确即可id clickhouse
查看clickhouse用户,然后用chown -R clickhouse:clickhouse logPath(日志所在文件夹)
Received from localhost:9000, ::1. DB::Exception: Column '1' already exists: (while reading from part /clickhouse/data/202_239_8163_43_8049/)
,是因为where条件中有两列都筛选了条件为1的,只有修改一列的筛选跳转才会正常,版本 18.16.1,如where age = 1 and genden = 1就会报这个错,修改为 where age = 1 and genden != 0就可以了formatDateTime(log_time,'%Y-%m-%d %H:%M:%S')
log_tikme 为日期类型的列SELECT table, formatReadableSize(total_bytes) AS size FROM system.tables ORDER BY size DESC;
参考 :https://blog.csdn.net/weixin_43829047/article/details/117219725
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。