ClickHouse入门:表引擎-HDFS
前言
插件及服务器版本
服务器:ubuntu 16.04
Hadoop:2.6
ClickHouse:20.9.3.45
文章目录
- 简介
 - 引擎配置
 - HDFS表引擎的两种使用形式
 - 引用
 
简介
ClickHouse的HDFS引擎可以对接hdfs,这里假设HDFS环境已经配置完成,本文测试使用的HDFS版本为2.6
HDFS引擎定义方法如下:
ENGINE = HDFS(hdfs_uri,format)
参数定义:
- hdfs_uri表示HDFS的文件存储路径
 - format表示文件格式(指ClickHouse支持的文件格式,常见有CSV、TSV和JSON等)
 
HDFS表引擎两种使用方式:
- 即负责读文件也负责写文件
 - 只负责读文件,文件写入工作则由外部系统完成
 
引擎配置
由于hdfs配置了HA,如果不做配置,创建一张只负责读文件的表,并查询数据,会报如下错误:
Code: 210. DB::Exception: Received from localhost:9000.
DB::Exception: Unable to connect to HDFS: InvalidParameter: Cannot parse URI:
hdfs://mycluster, missing port or invalid HA configuration
Caused by: HdfsConfigNotFound: Config key: dfs.ha.namenodes.mycluster not found.

需要做如下配置解决问题
1、拷贝hdfs-site.xml文件至/etc/clickhouse-server,并修改文件名为hdfs-client.xml
2、修改ClickHouse Server启动文件,添加环境变量Environment=“LIBHDFS3_CONF=/etc/clickhouse-server/hdfs-client.xml”
备注:
这里测试环境为ubuntu环境,启动服务用systemctl启动,所以修改启动文件的路径为:vi /etc/systemd/system/clickhouse-server.service

3、加载并重启clickhouse-serversystemctl daemon-reload
systemctl restart clickhouse-server.service
4、测试
新创建一张只读表,对应的hdfs上已经提前放了一个测试文件 1.txt
CREATE TABLE test_hdfs
(
id Int32
)
ENGINE HDFS('hdfs://mycluster/1.txt','CSV');

查询表里的数据
HDFS表引擎的两种使用形式
即负责读文件,也负责写文件
创建一张新表
CREATE TABLE test_hdfs_read
(
id Int32,
name String
)
ENGINE HDFS('hdfs://mycluster/test','CSV');

插入数据
insert into test_hdfs_read values (1,'tracy');

查询表数据并查看hdfs目录情况


这里可以看到hdfs目录下多了一个test文件
只负责读文件,文件写入工作则由外部系统完成
这种形式类似于hive的外挂表,由其它系统直接将文件直接写入HDFS,通过参数hdsfs_ui和format与HDFS的文件路径、文件格式建立映射,其中hdfs_uri支持以下几种常见的配置方法:
1. 绝对路径:会指定路径上的单个文件,例如hdfs://mycluster/1.txt
2. *通配符:匹配所有字符,例如hdfs://mycluster/ * ,会读取hdfs://mycluster/路径下的所有文件
3. ?通配符:匹配单个字符,例如hdfs://mycluster/test_?.txt会匹配所有test_?.txt的文件,?代表任意字符
4. {M…N}数字区间:匹配指定数字的文件,例如路径hdfs://mycluster/test_{1…3}.txt,则会读取hdfs://mycluster/路径下的文件test_1.txt,test_2.txt,test_3.txt在hdfs新建一个目录,并放3个文件

测试*通配符
CREATE TABLE test_hdfs_read_all
(
`id` Int32,
`name` String
)
ENGINE = HDFS('hdfs://mycluster/test_hdfs_read/*', 'CSV')

测试?通配符
CREATE TABLE test_hdfs_read_1
(
`id` Int32,
`name` String
)
ENGINE = HDFS('hdfs://mycluster/test_hdfs_read/test_?.csv', 'CSV')

测试数字区间通配符通配符
CREATE TABLE test_hdfs_read_2
(
`id` Int32,
`name` String
)
ENGINE = HDFS('hdfs://mycluster/test_hdfs_read/test_{2..3}.csv', 'CSV')

这里只匹配了test_2和test_3,所以只有两条记录
引用
https://github.com/ClickHouse/ClickHouse/issues/8159
ClickHouse入门:表引擎-HDFS的更多相关文章
- UniqueMergeTree:支持实时更新删除的 ClickHouse 表引擎
		
UniqueMergeTree 开发的业务背景 首先,我们看一下哪些场景需要用到实时更新. 我们总结了三类场景: 第一类是业务需要对它的交易类数据进行实时分析,需要把数据流同步到 ClickHouse ...
 - ClickHouse(10)ClickHouse合并树MergeTree家族表引擎之ReplacingMergeTree详细解析
		
目录 建表语法 数据处理策略 资料分享 参考文章 MergeTree拥有主键,但是它的主键却没有唯一键的约束.这意味着即便多行数据的主键相同,它们还是能够被正常写入.在某些使用场合,用户并不希望数据表 ...
 - clickhouse入门到实战及面试
		
第一章. clickhouse入门 一.ClickHouse介绍 ClickHouse(开源)是一个面向列的数据库管理系统(DBMS),用于在线分析处理查询(OLAP). 关键词:开源.面向列.联机分 ...
 - Clickhouse 入门
		
clickhouse 简介 ck是一个列式存储的数据库,其针对的场景是OLAP.OLAP的特点是: 数据不经常写,即便写也是批量写.不像OLTP是一条一条写 大多数是读请求 查询并发较少,不适合放置先 ...
 - ClickHouse入门笔记
		
ClickHouse笔记 目录 ClickHouse笔记 第 1 章 ClickHouse 入门 列式储存的好处: 第 2 章 ClickHouse 的安装 第 3 章 数据类型 整型 浮点型 布尔型 ...
 - Clickhouse 分布式表&本地表 &ClickHouse实现时序数据管理和挖掘
		
一.CK 分布式表和本地表 (1)CK是一个纯列式存储的数据库,一个列就是硬盘上的一个或多个文件(多个分区有多个文件),关于列式存储这里就不展开了,总之列存对于分析来讲好处更大,因为每个列单独存储,所 ...
 - Clickhouse 分布式表&本地表
		
CK 分布式表和本地表 ck的表分为两种: 分布式表 一个逻辑上的表, 可以理解为数据库中的视图, 一般查询都查询分布式表. 分布式表引擎会将我们的查询请求路由本地表进行查询, 然后进行汇总最终返回给 ...
 - innodb数据库批量转换表引擎为MyISAM
		
2013.0106 innodb数据库批量转换表引擎为MyISAM 来源:本站原创 PHP, 数据库, 系统技术 超过488名童鞋围观 1条评论 <?php //连接数据库 $host='lo ...
 - Mysql MyISAM数据库批量转换表引擎为Innodb
		
Mysql MyISAM数据库批量转换表引擎为Innodb 最近在做事物处理需要把表结构都改为带有支持事物的Innodb引擎格式, 把里面数据库 用户名.密码 等信息修改为你自己的,放在网站下运行即可 ...
 
随机推荐
- js上 十八、字符串
			
十八.字符串 #18.1.认识字符串 #什么是字符串 字符串可以是引号中的任意文本.字符串可以由双引号(")或单引号(')表示 ,如 'hello' , "中国" #为什 ...
 - 【英雄帖】FreeRedis 邀请您一起优化项目。
			
嘿!各位!自 FreeRedis 开库以来,相继出现了很多贡献者,我们正在对 FreeRedis 的各功能模块做优化,这并不意味着现版的 FreeRedis 有问题,我们只是希望在某些方面做得更好.如 ...
 - jmeter流媒体在线播放HLS插件BlazeMeter - HLS Plugin实现视频在线播放压测
			
一.前提 近日因工作需要,需对视频在线播放功能进行压测,视频播放使用的是HLS协议,传输内容包括两部分,一是用来控制播放的m3u8文件,二是TS媒体文件.(HLS协议和m3u8详解可参考此链接:htt ...
 - 用 Java 训练出一只“不死鸟”
			
作者:Kingyu & Lanking FlappyBird 是 2013 年推出的一款手机游戏,因其简单的玩法但极度困难的设定迅速走红全网.随着深度学习(DL)与增强学习(RL)等前沿算法的 ...
 - Android自定义ViewGroup-入门
			
1.效果 2步骤 自定义ViewGroup的步骤是 1.1测量onMeasure /** * 获取子view的个数 * 逐个测量其宽高 得到整个ViewGroup的宽高 * * @param widt ...
 - 向Docker告别的时候到了
			
在容器的远古时期(大约4年前),Docker是容器游戏中仅有的参与者.但是现在情况不一样了,Docker不再是唯一的一个了,只是另一个容器引擎而已.Docker允许我们构建,运行,拉取,上传,查看容器 ...
 - 算法竞赛入门经典第二版第二章习题-(练习Java和C++语法)
			
习题2-1水仙花数(daffodil) 输出1000-999中所有的水仙花数.若三位数ABC满足ABC = A3+B3+C3,则称其为水仙花数. Java: package suanfa; publi ...
 - Fresco 二三事:图片处理之旋转、缩放、裁剪切割图片
			
关于Fresco加载图片的处理,例如旋转.裁剪切割图片,在官方文档也都有提到,只是感觉写的不太详细,正好最近项目里有类似需求,所以分享一些使用小tip,后面的朋友就不用再走弯路浪费时间了.(测试图片分 ...
 - python实例:解决经典扑克牌游戏 -- 四张牌凑24点 (一)
			
Hey! Hope you had a great day so far! 今天想和大家讨论的是一道我从这学期cs的期末考试得到灵感的题:Get 24 Poker Game.说到 Get 24 Pok ...
 - 企业集群架构-03-NFS
			
NFS 目录 NFS NFS基本概述 NFS应用场景 NFS实现原理 NFS总结 NFS服务端安装 环境准备 服务端安装NFS 服务端NFS配置 服务端开机自启 服务端验证配置 NFS客户端挂载卸载 ...