持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第14天,点击查看活动详情
前言
HDFS引擎允许通过ClickHouse管理HDFS上的数据,因此将Apache Hadoop生态系统的集成。此引擎类似于文件和URL引擎,但提供Hadoop特有的功能。
正文
话不多说,我们看下怎么使用吧。现在我们来看下HDFS引擎的使用和参数详解
ENGINE = HDFS(URI, format)
引擎详细参数:
- URI—HDFS中的整个文件URI。URI的路径部分可能包含globs。在这种情况下,表格将是只读的。
- 格式-指定一种可用的文件格式。要执行SELECT查询,输入必须支持该格式,输出必须支持INSERT查询。可用格式列在“格式”部分中。
实操案例
a) 创建HDFS表引擎
CREATE TABLE hdfs_engine_table (name String, value UInt32) ENGINE=HDFS('hdfs://hdfs1:9000/other_storage', 'TSV')
b) 插入几条测试数据
INSERT INTO hdfs_engine_table VALUES ('one', 1), ('two', 2), ('three', 3)
c) 查询表格
SELECT * FROM hdfs_engine_table LIMIT 2
实施详细信息
- 读取和写入可以并行进行。
- 不支持:
- ALTER和SELECT…SAMPLE等操作。
- 索引。 3.支持零拷贝复制,但不建议这样做。。
路径匹配
多路径组件可以具有全局变量。对于正在处理的文件,应该存在并与整个路径模式匹配。文件列表在SELECT期间确定(而不是在CREATE时刻)。
- *-替换任意数量的任何字符,但不包括空字符串。
- ? — 替换任何单个字符。
- {some_string、another_string,yet_another_one}-替换字符串“some_string”、“another_string”、“yet_anoter_one”中的任何一个。
- {N.M.}-替换N到M范围内的任何数字,包括两个边框。
- 带有{}的构造类似于远程表函数。
操作案例
a) 假设我们提供了以下的文件系统路径
'hdfs://hdfs1:9000/some_dir/some_file_1'
'hdfs://hdfs1:9000/some_dir/some_file_2'
'hdfs://hdfs1:9000/some_dir/some_file_3'
'hdfs://hdfs1:9000/another_dir/some_file_1'
'hdfs://hdfs1:9000/another_dir/some_file_2'
'hdfs://hdfs1:9000/another_dir/some_file_3'
b) 建表方式
CREATE TABLE table_with_range (name String, value UInt32) ENGINE = HDFS('hdfs://hdfs1:9000/{some,another}_dir/some_file_{1..3}', 'TSV')
或
CREATE TABLE table_with_question_mark (name String, value UInt32) ENGINE = HDFS('hdfs://hdfs1:9000/{some,another}_dir/some_file_?', 'TSV')
或
CREATE TABLE table_with_asterisk (name String, value UInt32) ENGINE = HDFS('hdfs://hdfs1:9000/{some,another}_dir/*', 'TSV')
注意:与GraphiteMergeTree类似,HDFS引擎支持使用ClickHouse配置文件进行扩展配置。您可以使用两个配置键:全局(hdfs)和用户级(hdfs_*)。首先应用全局配置,然后应用用户级配置(如果存在)。
HDFS Namenode HA 支持
libhdfs3支持HDFS namenode HA:
- 复制hdfs-site.xml从HDFS节点到/etc/clickhouse-server/。
- 将以下内容添加到ClickHouse配置文件:
<hdfs>
<libhdfs3_conf>/etc/clickhouse-server/hdfs-site.xml</libhdfs3_conf>
</hdfs>
- 然后使用hdfs-site.xml文件中的dfs.nameservices标签值作为HDFS URI.例如替换
hdfs://appadmin@192.168.101.11:8020/abc/为hdfs://appadmin@my_nameservice/abc/.
总结
本节主要讲解了Clickhouse集成HDFS文件系统,首先我们针对了HDFS引擎的参数讲解,然后做了一个小案例测试,其次我们又对文件系统的路径匹配做了详细说明,可以正则读取多个文件路径,最后对HA做了一个不补充,使用HA地址读取。欢迎大家留言讨论并关注!!!你们的支持是我创作前进的动力。