-
Spark+ClickHouse实战企业级数据仓库:ClickHouse常用的数据格式
- 网站名称:Spark+ClickHouse实战企业级数据仓库:ClickHouse常用的数据格式
- 网站分类:技术文章
- 收录时间:2025-08-18 04:51
- 网站地址:
“Spark+ClickHouse实战企业级数据仓库:ClickHouse常用的数据格式” 网站介绍
1、ClickHouse的数据格式概述的数据格式概述
ClickHouse的数据格式分为输入格式和输出格式。 输入格式用于:解析数据用于Insert、执行基于后端文件(例如File、URL或HDFS表引擎)表的select、读取外部字典。 输出格式用于:组织select的查询结果、将数据insert到基于后端文件(例如File、URL或HDFS表引擎)的表。 常见的数据格式有:TabSeparated(TSV)系、CSV系、JSON系、ORC、Parquet等。 更多的数据格式参考官网:
https://clickhouse.com/docs/en/interfaces/formats/。
点获取Spark+ClickHouse实战企业级数据仓库以及Flink+ClickHouse构建数仓项目教程,请私信或留言。
2、TabSeparated(TSV)系系
TabSeparated系格式,按行组织数据,字段之间使用制表符(tab)分隔。 TabSeparated系主要包含TabSeparated(TSV)、TabSeparatedRaw(TSVRaw)、TabSeparatedWithNames(TSVWithNames)和
TabSeparatedWithNamesAndTypes(TSVWithNamesAndTypes)等。
(1)、TabSeparated(TSV): 转义特殊字符。
(2)、TabSeparatedRaw(TSVRaw): 不转义特殊字符。
(3)、TabSeparatedWithNames(TSVWithNames): 首行是列的名称。在查询时,TabSeparatedWithNames格式的第一行显示列的名称。在数据导入时,第一行完全被忽略。
(4)、
TabSeparatedWithNamesAndTypes(TSVWithNamesAndTypes): 前两行分别是列的名称和列数据的类型。 在查询时,
TabSeparatedWithNamesAndTypes格式在主数据的前面额外显示两行数据, 第一行显 示列的名称, 第二行显示列的数据类型。在数据导入时,前两完全被忽略。
需要ClickHouse,湖仓一体,Flink等大数据课程请加薇
2.1 TabSeparated((TSV)格式的插入和查询)格式的插入和查询
创建数据表: CREATE TABLE tsv_demo(srcip String, destip String, time String) ENGINE = TinyLog;
(1)、TSV数据输入 准备TSV格式的数据,字段之间使用tab键分隔: 113.248.234.232 123.212.22.01 2018-07-12 14:35:31 115.248.158.231 154.245.56.23 2020-07-12 13:26:26 115.248.158.231 154.245.56.23 2020-07-12 13:22:13 187.248.135.230 221.228.112.45 2019-08-09 13:17:39 187.248.234.232 221.228.112.24 2019-08-09 20:51:16 115.248.158.231 154.245.56.23 2020-07-12 17:22:56 准备文本, 导入数据脚本: $ clickhouse-client --query "INSERT INTO tsv_demo FORMAT TSV" --max_insert_block_size=100000 < tsv_demo.tsv 查看数据如下: xichen :) select * from tsv_demo; ┌─srcip───────────┬─destip─────────┬─time────────────────┐ │ 113.248.234.232 │ 123.212.22.01 │ 2018-07-12 14:35:31 │ │ 115.248.158.231 │ 154.245.56.23 │ 2020-07-12 13:26:26 │ │ 115.248.158.231 │ 154.245.56.23 │ 2020-07-12 13:22:13 │ │ 187.248.135.230 │ 221.228.112.45 │ 2019-08-09 13:17:39 │ │ 187.248.234.232 │ 221.228.112.24 │ 2019-08-09 20:51:16 │ │ 115.248.158.231 │ 154.245.56.23 │ 2020-07-12 17:22:56 │ └─────────────────┴────────────────┴─────────────────────┘ 6 rows in set. Elapsed: 0.008 sec.
(2)、TSV格式输出 使用TSV格式输出,输出的字段之间使用制表符分隔: localhost :) select * from tsv_demo FORMAT TSV; 113.248.234.232 123.212.22.01 2018-07-12 14:35:31 115.248.158.231 154.245.56.23 2020-07-12 13:26:26 115.248.158.231 154.245.56.23 2020-07-12 13:22:13 187.248.135.230 221.228.112.45 2019-08-09 13:17:39 187.248.234.232 221.228.112.24 2019-08-09 20:51:16 115.248.158.231 154.245.56.23 2020-07-12 17:22:56 6 rows in set. Elapsed: 0.005 sec. 或者使用TSV格式导出数据: clickhouse-client --query "select * from tsv_demo format TSV" > tsv_demo_export.tsv
2.2 TabSeparated和和TabSeparatedRaw格式的对比格式的对比
在数据写入和查询时,使用TabSeparatedRaw格式,不会对特殊字符进行转义,而是按照原样进行写入和查询。
(1)、数据写入 创建数据表: create table escape_demo(name String, addr String, age UInt8, desc String) ENGINE=TinyLog; 准备数据,字段之间使用制表符分隔: zhangsan nanjing\tjiangsu 23 From nanjing lisi hangzhou\tzhejiang 32 \x41 amazing place xiaoming hefei\tanhui 25 notepad 以TabSeparated格式导入数据: clickhouse-client --query="INSERT INTO escape_demo FORMAT TSV" < escape_demo.tsv 数据查询: xichen :) select * from escape_demo; ┌─name─────┬─addr────────────────┬─age─┬─desc────────────┐ │ zhangsan │ nanjing jiangsu │ 23 │ From nanjing │ │ lisi │ hangzhou zhejiang │ 32 │ A amazing place │ │ xiaoming │ hefei anhui │ 25 │ notepad │ └──────────┴─────────────────────┴─────┴─────────────────┘ 以TabSeparatedRaw格式导入数据: xichen :) select * from escape_demo; ┌─name─────┬─addr────────────────┬─age─┬─desc───────────────┐ │ zhangsan │ nanjing\tjiangsu │ 23 │ From nanjing │ │ lisi │ hangzhou\tzhejiang │ 32 │ \x41 amazing place │ │ xiaoming │ hefei\tanhui │ 25 │ notepad │ 1
└──────────┴─────────────────────┴─────┴────────────────────┘
(2)、基于File引擎的数据查询和插入 创建TabSeparated和TabSeparatedRaw格式的表: CREATE TABLE file_engine_table(name String, addr String, age UInt8, desc String) ENGINE=File(TabSeparated); CREATE TABLE file_engine_table_raw (name String, addr String, age UInt8, desc String) ENGINE=File(TabSeparatedRaw); 手工创建文件:
/var/lib/clickhouse/data/default/file_engine_table/data.TabSeparated
/var/lib/clickhouse/data/default/file_engine_table_raw/data.TabSeparatedRaw 这两个文件的内容相同,均包含下面的数据: zhangsan nanjing\tjiangsu 23 From nanjing lisi hangzhou\tzhejiang 32 \x41 amazing place xiaoming hefei\tanhui 25 notepad 执行数据查询: xichen :) select * from file_engine_table; ┌─name─────┬─addr────────────────┬─age─┬─desc────────────┐ │ zhangsan │ nanjing jiangsu │ 23 │ From nanjing │ │ lisi │ hangzhou zhejiang │ 32 │ A amazing place │ │ xiaoming │ hefei anhui │ 25 │ notepad │ └──────────┴─────────────────────┴─────┴─────────────────┘ xichen :) select * from file_engine_table format TSV; zhangsan nanjing\tjiangsu 23 From nanjing lisi hangzhou\tzhejiang 32 A amazing place xiaoming hefei\tanhui 25 notepad xichen :) select * from file_engine_table format TSVRaw; zhangsan nanjing jiangsu 23 From nanjing lisi hangzhou zhejiang 32 A amazing place xiaoming hefei anhui 25 notepad xichen :) select * from file_engine_table_raw; ┌─name─────┬─addr───────────────┬─age─┬─desc───────────────┐ │ zhangsan │ nanjing\tjiangsu │ 23 │ From nanjing │ │ lisi │ hangzhou\tzhejiang │ 32 │ \x41 amazing place │ │ xiaoming │ hefei\tanhui │ 25 │ notepad │ └──────────┴────────────────────┴─────┴────────────────────┘ xichen :) select * from file_engine_table_raw format TSV; zhangsan nanjing\\tjiangsu 23 From nanjing lisi hangzhou\\tzhejiang 32 \\x41 amazing place xiaoming hefei\\tanhui 25 notepad xichen :) select * from file_engine_table_raw format TSVRaw; zhangsan nanjing\tjiangsu 23 From nanjing lisi hangzhou\tzhejiang 32 \x41 amazing place xiaoming hefei\tanhui 25 notepad
2.3 TabSeparatedWithNames(TSVWithNames)格式格式
TabSeparatedWithNames格式也可以使用名称TSVWithNames表示。
不同于TabSeparated格式,在查询时,TabSeparatedWithNames格式的第一行显示列的名称。在数据导入时,第一行完全被忽略,不会解析第一行为表头。
示例:
localhost:)select*fromescape_demo FORMAT TSVWithNames;
nameaddrage desc
zhangsannanjing\tjiangsu23From nanjing
lisihangzhou\tzhejiang32A amazing place
xiaominghefei\tanhui25notepad
3rowsinset.Elapsed:0.007sec.
2.4 TabSeparatedWithNamesAndTypes(TSVWithNamesAndTypes)格式格式
TabSeparatedWithNamesAndTypes格式也可以使用名称TSVWithNamesAndTypes表示。
不用于TabSeparated格式,在查询时,
TabSeparatedWithNamesAndTypes格式在主数据的前面额外显示两行数据,第一行显示列的名称,第二行显示列的数据类型。在数据导入时,前两完全被忽略。
示例:
localhost:)select*fromescape_demo FORMAT TabSeparatedWithNamesAndTypes;
nameaddrage desc
StringStringUInt8String
zhangsannanjing\tjiangsu23From nanjing
lisihangzhou\tzhejiang32A amazing place
xiaominghefei\tanhui25notepad
3rowsinset.Elapsed:0.006sec.
更多相关网站
- 数据体系建设-数据血缘(1)(数据体系规划)
- MySQL数据一键同步至ClickHouse数据库
- 大数据ClickHouse进阶(一):ClickHouse使用场景和集群安装
- Node.js 连接 ClickHouse 并执行 SQL 的方式
- BI产品工具Tableau使用相关问题汇总
- clickhouse填坑之除数为0完美解决
- ClickHouse学习笔记四ClickHouse基础语法
- 趣头条基于Flink+ClickHouse的实时数据分析平台
- 基于ClickHouse的用户行为大数据架构
- 那些年我们踩过的一些坑之 ClickHouse
- ClickHouse在自助行为分析场景的实践应用
- ClickHouse的应用场景 和使用约束
- ClickHouse学习笔记一ClickHouse入门
- 大数据ClickHouse(三):客户端命令行参数
- ClickHouse 可观测性最佳实践(clickhouse高可用)
- 大数据ClickHouse进阶(八):ClickHouse的with子句
- Clickhouse多磁盘存储,实现冷热数据分离
- 快速安装 ClickHouse(快速安装展会桁架出租)
- 最近发表
- 标签列表
-
- mydisktest_v298 (35)
- sql 日期比较 (33)
- document.appendchild (35)
- 头像打包下载 (35)
- acmecadconverter_8.52绿色版 (25)
- 梦幻诛仙表情包 (36)
- java面试宝典2019pdf (26)
- disk++ (30)
- 加密与解密第四版pdf (29)
- iteye (26)
- centos7.4下载 (32)
- intouch2014r2sp1永久授权 (33)
- jdk1.8.0_191下载 (27)
- axure9注册码 (30)
- virtualdrivemaster (26)
- 数据结构c语言版严蔚敏pdf (25)
- 兔兔工程量计算软件下载 (27)
- 代码整洁之道 pdf (26)
- ccproxy破解版 (31)
- aida64模板 (28)
- engine=innodb (33)
- shiro jwt (28)
- segoe ui是什么字体 (27)
- head first java电子版 (32)
- clickhouse中文文档 (28)