前言
插件及服务器版本
服务器: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-server

    systemctl 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表引擎的两种使用形式

  • 即负责读文件,也负责写文件

    1. 创建一张新表

      CREATE TABLE test_hdfs_read
      (
      id Int32,
      name String
      )
      ENGINE HDFS('hdfs://mycluster/test','CSV');

    2. 插入数据

      insert into test_hdfs_read values (1,'tracy');

    3. 查询表数据并查看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

    1. 在hdfs新建一个目录,并放3个文件

    2. 测试*通配符

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

    3. 测试?通配符

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

    4. 测试数字区间通配符通配符

      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

文章转载自 http://www.dtmao.cc/news_show_314553.shtml

ClickHouse入门:表引擎-HDFS的更多相关文章

  1. UniqueMergeTree:支持实时更新删除的 ClickHouse 表引擎

    UniqueMergeTree 开发的业务背景 首先,我们看一下哪些场景需要用到实时更新. 我们总结了三类场景: 第一类是业务需要对它的交易类数据进行实时分析,需要把数据流同步到 ClickHouse ...

  2. ClickHouse(10)ClickHouse合并树MergeTree家族表引擎之ReplacingMergeTree详细解析

    目录 建表语法 数据处理策略 资料分享 参考文章 MergeTree拥有主键,但是它的主键却没有唯一键的约束.这意味着即便多行数据的主键相同,它们还是能够被正常写入.在某些使用场合,用户并不希望数据表 ...

  3. clickhouse入门到实战及面试

    第一章. clickhouse入门 一.ClickHouse介绍 ClickHouse(开源)是一个面向列的数据库管理系统(DBMS),用于在线分析处理查询(OLAP). 关键词:开源.面向列.联机分 ...

  4. Clickhouse 入门

    clickhouse 简介 ck是一个列式存储的数据库,其针对的场景是OLAP.OLAP的特点是: 数据不经常写,即便写也是批量写.不像OLTP是一条一条写 大多数是读请求 查询并发较少,不适合放置先 ...

  5. ClickHouse入门笔记

    ClickHouse笔记 目录 ClickHouse笔记 第 1 章 ClickHouse 入门 列式储存的好处: 第 2 章 ClickHouse 的安装 第 3 章 数据类型 整型 浮点型 布尔型 ...

  6. Clickhouse 分布式表&本地表 &ClickHouse实现时序数据管理和挖掘

    一.CK 分布式表和本地表 (1)CK是一个纯列式存储的数据库,一个列就是硬盘上的一个或多个文件(多个分区有多个文件),关于列式存储这里就不展开了,总之列存对于分析来讲好处更大,因为每个列单独存储,所 ...

  7. Clickhouse 分布式表&本地表

    CK 分布式表和本地表 ck的表分为两种: 分布式表 一个逻辑上的表, 可以理解为数据库中的视图, 一般查询都查询分布式表. 分布式表引擎会将我们的查询请求路由本地表进行查询, 然后进行汇总最终返回给 ...

  8. innodb数据库批量转换表引擎为MyISAM

    2013.0106 innodb数据库批量转换表引擎为MyISAM 来源:本站原创 PHP, 数据库, 系统技术 超过488名童鞋围观 1条评论  <?php //连接数据库 $host='lo ...

  9. Mysql MyISAM数据库批量转换表引擎为Innodb

    Mysql MyISAM数据库批量转换表引擎为Innodb 最近在做事物处理需要把表结构都改为带有支持事物的Innodb引擎格式, 把里面数据库 用户名.密码 等信息修改为你自己的,放在网站下运行即可 ...

随机推荐

  1. css进阶 01-CSS中的非布局样式

    01-CSS中的非布局样式 #前言 CSS中,有很多非布局样式,这些样式(属性)和与布局无关,包括: 字体.字重.颜色.大小.行高 背景.边框 滚动.换行 装饰性属性(粗体.斜体.下划线)等. 这篇文 ...

  2. Java之String重点解析

    String s = new String("abc")这段代码创建了几个对象呢?s=="abc"这个判断的结果是什么?s.substring(0,2).int ...

  3. C#中的深度学习(一):使用OpenCV识别硬币

    在本系列文章中,我们将使用深度神经网络(DNN)来执行硬币识别.具体来说,我们将训练一个DNN识别图像中的硬币. 在本文中,我们将描述一个OpenCV应用程序,它将检测图像中的硬币.硬币检测是硬币完整 ...

  4. Collection集合重难点梳理,增强for注意事项和三种遍历的应用场景,栈和队列特点,数组和链表特点,ArrayList源码解析, LinkedList-源码解析

    重难点梳理 使用到的新单词: 1.collection[kəˈlekʃn] 聚集 2.empty[ˈempti] 空的 3.clear[klɪə(r)] 清除 4.iterator 迭代器 学习目标: ...

  5. os模块和os.path模块常用方法

    今天和大家分享python内置模块中的os模块和os.path模块. 1.什么是模块呢? 在计算机开发过程中,代码越写越多,也就越来越难以维护,所以为了可维护的代码,我们会把函数进行分组,放在不同的文 ...

  6. 【Tomcat】Tomcat服务器核心配置说明及标签

    目录 一,主要标签结构 二,Server标签 标签属性: 子标签: 三,Service 标签 子标签: 四,Executor 标签 属性: 五,Connector标签 属性: 六,Engine标签 属 ...

  7. CSS系列 (03):CSS三大特性

    层叠性 层叠性指的是样式的优先级,当产生冲突时以优先级高的为准,优先级相同时取后面定义的属性样式. 继承性 继承性指的是子孙元素可以继承父元素的属性. 记录一下开发中常用的继承属性: 字体系列 fon ...

  8. 【mybatis-plus】分页、逻辑删除

    通过mybatis-plus实现分页,也是很简单,插件大法. 一.分页 1.配置分页插件 把分页的插件也配置到统一的配置类里: @Configuration // 配置扫描mapper的路径 @Map ...

  9. FPT: Feature Pyramid Transfomer

    导言: 本文介绍了一个在空间和尺度上全活跃特征交互(fully active feature interaction across both space and scales)的特征金字塔transf ...

  10. hive on spark:return code 30041 Failed to create Spark client for Spark session原因分析及解决方案探寻

    最近在Hive中使用Spark引擎进行执行时(set hive.execution.engine=spark),经常遇到return code 30041的报错,为了深入探究其原因,阅读了官方issu ...