ClinkHouse基本使用说明
1.clickhouse的下载安装
这部分没有什么需要特别说明的,按照官方文档下载安装即可。
官方帮助文档
提前需要准备linux环境:准备clickhouse安装环境,如Mac OS或Linux(虚拟机或云服务器均可)
这里使用的是云服务器。
2.clickhousse的基本使用
实验内容:
- 上传下发的employee.csv文件到clickhouse的employee表 ,并通过控制台打印出来。employee的列名称为id,name(员工姓名),bonus(奖金),department(部门)
- 使用某种语言连接clickhouse,新建library表,上传library.csv文件到library表
- 使用HTTP请求方式查询library表
参考文档:
https://clickhouse.com/docs/zh/interfaces/http
https://clickhouse.com/docs/zh/interfaces/jdbc
https://clickhouse.com/docs/zh/interfaces/cli
https://clickhouse.com/docs/zh/sql-reference/statements/
2.1建表与上传文件
执行bash
,进入容器
sudo docker exec -it some-clickhouse-server bash
进入clickclient
创建数据库:
create database clickhousetest
在数据库中创建两个表:employee
和library
:
employee
表
CREATE TABLE clickhousetest.employee (`id` Int32, `name` String, `bonus` Int32, `department` String) ENGINE = MergeTree ORDER BY id SETTINGS index_granularity=8192
library
表
CREATE TABLE clickhousetest.library (`id` Int32, `visit_date` String, `people` Int32) ENGINE = MergeTree ORDER BY id SETTINGS index_granularity=8192
上传两个CSV文件到服务器的文件中:
进入docker命令行,将服务器中文件导入到docker容器的目录sunyunqi下:
docker cp /home/ubuntu/clickhouse some-clickhouse-server:/sunyunqi/
然后执行下面的命令,将employee表中的内容以csv的格式读入到clickhouse.employee
表中:
clickhouse-client --query="INSERT INTO clickhousetest.employee FORMAT CSV" < ./sunyunqi/employee.csv
library操作一样,结果如下:
clickhouse-client --query="INSERT INTO clickhousetest.library FORMAT CSV" < ./sunyunqi/library.csv
2.2 HTTP形式查询library表
执行bash后,执行下面命令可以得到结果为OK
curl 'http://localhost:8123'
下面查询employee表:
echo 'SELECT * FROM clickhousetest.employee' | curl 'http://localhost:8123/' --data-binary @-
3.OLAP查询
3.1 查询employee表每个部门的奖金最高的前两个人
select e1.name, e1.bonus, e1.department, e1.ranks from (select name, bonus, department, dense_rank() over (partition by department order by bonus desc) as ranksfrom clickhousetest.employee) as e1where e1.ranks<=3
功能描述:根据PARTITION BY子句中表达式的值,从查询返回的每一行,计算它们与其它行的相对位置。组内的数据按PARTITION BY子句排序,然后给每一行赋一个号,从而形成一个序列,该序列从1开始,往后累加。每次ORDER BY表达式的值发生变化时,该序列也随之增加。有同样值的行得到同样的数字序号(认为null时相等的)。密集的序列返回的时没有间隔的数.
3.2 查询图书馆浏览次数大于99人,而且id连续的行数不止3行的数据
SELECT id, visit_date, people from
(select *, count(*) over (partition by differ) as countfrom(select id, visit_date, people, (id - g) as differfrom (select id, visit_date, people, row_number() OVER (order by id) as gfrom clickhousetest.library as sWHERE s.people > 99) as temp) as s1
) as s2
where s2.count >= 3 order by id
首先需要得到访问人数大于99人的表:temp,并且在这个表中我们记录现在的行号g
使用原来的id减去现在的行号g,得到一个结果记做differ,这个differ反映了数据是否是连续的
根据这个是否连续的值进行分组,计算这个组的有多少行,作为一个新的属性count
在上表的结果中挑选出count大于3的即为最终结果。
4.目录结构
随便找一个employee表进去:
- 分区目录
all_1_1_0和all_2_2_0都是分区目录
分区ID_最小数据块编号_最大数据块编号_层级构成。在本例中,分区ID是all, 最小数据块编号是1,最大数据库编号是1,层级是0
- 卸载后的表分区目录
通过DETACH语句卸载后的表分区存放位置
- 插入一条数据后查看存储文件发生变化
clickhouse-client --query="INSERT INTO clickhousetest.employee (*) values (8, 'sunyunqi', 1000, 'GWY')"
层级构成发生变化,可能是发生了合并?
ClinkHouse基本使用说明相关推荐
- abaqus高性能服务器怎么用,高性能计算平台ABAQUS任务调度使用说明作者陈林E-Mailchenlin.PDF...
高性能计算平台ABAQUS任务调度使用说明作者陈林E-Mailchenlin.PDF 高性能计算平台ABAQUS 任务调度使用说明 作者:陈林 E-Mail:chenlin@ 日期:2017-1-10 ...
- linux 文件拷贝并替换,Linux_cmd replace 文件替换使用说明,帮助信息: 复制代码 代码如 - phpStudy...
cmd replace 文件替换使用说明 帮助信息: 复制代码 代码如下: 替换文件. REPLACE [drive1:][path1]filename [drive2:][path2] [/A] [ ...
- Simple Dynamic Strings(SDS)源码解析和使用说明二
在<Simple Dynamic Strings(SDS)源码解析和使用说明一>文中,我们分析了SDS库中数据的基本结构和创建.释放等方法.本文将介绍其一些其他方法及实现.(转载请指明出于 ...
- Delphi开发的IOCP测试Demo以及使用说明。
Delphi开发的IOCP,此为压力测试Demo和使用说明.
- oracle database link mysql_oracle database link使用说明
oracle database link使用说明 作用: 将多个oracle数据库逻辑上看成一个数据库,也就是说在一个数据库中可以操作另一个数据库中的对象. 简易语法: CREATE [PUBLIC] ...
- 序列拼接工具Bowtie使用说明
序列拼接工具Bowtie使用说明 2011-06-08 ~ ADMIN Bowtie是一个超级快速的,较为节省内存的短序列拼接至模板基因组的工具.它在拼接35碱基长度的序列时,可以达到每小时2.5亿次 ...
- benchmarksql测试mysql_数据库压力测试工具 -- BenchmarkSQL 使用说明
关于数据库的压力测试,之前写过3篇Blog: 数据库基准测试(Database Benchmarking) 说明 数据库压力测试工具 -- Hammerdb 使用说明 数据库压力测试工具 -- Swi ...
- 计算机网页基础课专业,关于《计算机应用基础》课程网页下的学习资源使用说明....
关于<计算机应用基础>课程网页下的学习资源使用说明. 关于<计算机应用基础>课程网页下的学习资源使用说明 各位同学:大家好! 07春学期已接近一半的时间了,新生对课程还需要更多 ...
- gh ost mysql_MySQL在线DDL gh-ost 使用说明
3)使用说明:条件是操作的MySQL上需要的binlog模式是ROW.如果在一个从上测试也必须是ROW模式,还要开启log_slave_updates.根据上面的参数说明按照需求进行调整. 环境:主库 ...
最新文章
- 一套Python试题
- c++计算eigen随笔(10)-数组、矩阵、向量(3)
- OpenCV方向梯度直方图HOG的实例(附完整代码)
- c#操作Xml(八)
- 为什么我们要使用Async、Await关键字
- IDEA远程连接mysq数据库
- oracle数据库月份日期固定,oracle 日期函数介绍-数据库专栏,ORACLE
- Python 3 的新特性zz
- docker入门与部署微服务--学习笔记
- python函数参数生成器_python函数补充、生成器、迭代器
- HTML 区块、内联元素
- 2分钟搞定收货地址三级联动,数据易于维护,更新。
- 早上如何泡上一杯质量上佳的柠檬水
- 服务器到内地更快的美国HS网络服务器
- openGL绘制带纹理地球,并实现鼠标键盘控制
- Makefile中传递宏定义字符串给C
- 【c语言】两个队列实现一个栈
- 64个数据分析常用术语
- 台州爱乐搜5.18与您相约香溢大酒店
- 杨昕立计算机学院,华南理工学子在全国大学生数模竞赛中创历史佳绩
热门文章
- UVM中uvm_sequencer的方法总结
- Unity 3D 图形学 Shader之顶点与片段着色器(五)
- 英语介绍计算机,计算机英语自我介绍
- python分析每月销售数据_如何用Python分析销售数据
- python飞机大战程序导入_Python飞机大战项目的准备 导入Pygame最全攻略~
- 广西艺术学院2012年本科招生专业考试通知
- 借助于栈结构将一个单链表逆置
- From CodingHorror: The Long, Dismal History of ...
- C#指定图片添加文字——修改版
- 关于按键精灵url的post方法返回值为空