HDFS
使用方式
ENGINE = HDFS(URI, format)
- URI:HDFS文件路径
format
:文件格式,比如CSV、JSON、TSV
等
使用示例
-- 建表,hdfs上的文件夹要提前存在
CREATE TABLE hdfs_engine_table3
(
emp_id UInt16 COMMENT '员工id',
name String COMMENT '员工姓名',
work_place String COMMENT '工作地点',
age UInt8 COMMENT '员工年龄',
depart String COMMENT '部门',
salary Decimal32(2) COMMENT '工资'
) ENGINE = HDFS('hdfs://mypc01:8020/chouse/hdfs_engine_table', 'CSV');
-- 写入数据
INSERT INTO hdfs_engine_table3 VALUES (1,'tom','上海',25,'技术部',20000),(2,'jack','上海',26,'人事部',10000);
-- 查询数据
select * from hdfs_engine_table3;
┌─emp_id─┬─name─┬─work_place─┬─age─┬─depart─┬───salary─┐
│ 1 │ tom │ 上海 │ 25 │ 技术部 │ 20000.00 │
│ 2 │ jack │ 上海 │ 26 │ 人事部 │ 10000.00 │
└────────┴──────┴────────────┴─────┴────────┴──────────┘
vi ch.csv
--添加不同内容
3,'tom','上海',25,'技术部',20000
hdfs dfs -appendToFile ch.csv /chouse/hdfs_engine_table
--再在HDFS上其对应的文件,添加几条数据,再次查看
select * from hdfs_engine_table;
┌─emp_id─┬─name─┬─work_place─┬─age─┬─depart─┬───salary─┐
│ 1 │ tom │ 上海 │ 25 │ 技术部 │ 20000.00 │
│ 2 │ jack │ 上海 │ 26 │ 人事部 │ 10000.00 │
│ 3 │ tom │ 上海 │ 25 │ 技术部 │ 20000.00 │
└────────┴──────┴────────────┴─────┴────────┴──────────┘
可以看出,这种方式与使用Hive
类似,我们直接可以将HDFS对应的文件映射成ClickHouse
中的一张表,这样就可以使用SQL操作HDFS
上的文件了。
值得注意的是:ClickHouse
并不能够删除HDFS上的数据,当我们在ClickHouse
客户端中删除了对应的表,只是删除了表结构,HDFS
上的文件并没有被删除,这一点跟Hive的外部表十分相似。
注意:要手动先创建目录