Parquet格式

MapReduce BMR

  • 发行版本
  • 功能发布记录
  • 产品描述
    • 节点类型说明
    • 产品优势
    • 应用场景
    • 产品功能
    • 产品简介
  • Python-SDK
    • Cluster(集群)
    • BmrClient
    • 异常处理
    • InstanceGroup(实例组)
    • 简介
    • 文档更新记录
    • Step(作业)
    • 版本变更记录
    • Instance(实例)
    • 快速入门
    • 安装SDK工具包
  • 开源组件介绍
    • Impala
    • Pig
    • Druid
    • Presto
    • Hue
    • Ooize
    • HBase
    • Kudu
    • Sqoop
    • Hadoop-Streaming
    • Zeppelin
    • Alluxio
    • Kerberos
      • 集群互信配置
      • 概述
    • ClickHouse
      • 常见问题
      • 数据迁移同步
        • 从Spark导入
        • 从Kafka同步数据
        • 将自建ClickHouse数据迁移到云ClickHouse中
        • 从Flink导入
        • 从MySQL导入和同步
        • 从本地数据导入
          • Parquet格式
          • JSON
          • SQL转储
          • CSV and TSV
      • 快速入门
        • 访问模式
        • 客户端登录
        • 创建ClickHouse集群
        • 基础操作
      • 运维相关操作
        • ClickHouse集群扩容
        • ClickHouse集群缩容
        • 日志配置说明
        • 监控告警配置
    • Ranger
      • ranger概述
      • 权限策略配置
    • Paimon
      • Hive示例
      • StarRocks示例
      • 联合查询示例
      • Flink示例
      • Spark示例
    • Flink
      • 基础使用
    • Trino
      • 基础使用
      • 概述
    • Spark
      • 引擎增强
      • 基础使用
    • Hive
      • 开发指南
        • 自定义函数(UDF)
      • 实践操作
        • Hive迁移
        • Hive操作HBase外表
      • 基础使用
        • Hive基础操作
        • Hive连接方式
  • Java-SDK
    • Cluster(集群)
    • 异常
    • BmrClient
    • InstanceGroup(实例组)
    • 日志
    • 文档更新记录
    • 版本更新记录
    • Step(作业)
    • Instance(实例)
    • 快速入门
    • 安装SDK工具包
    • 概述
  • 快速入门
    • 操作流程概览
    • 环境准备
    • 创建集群
    • 数据准备
    • 开发作业
    • 查看结果
    • ClickHouse
      • 导入数据
      • 创建数据库
      • 连接集群
      • 创建表
  • 操作指南
    • 集群模板
    • 服务管理
    • 集群配置
      • 用户管理
      • 弹性伸缩
      • 创建集群
      • 集群安全模式
      • EIP
      • Hive元数据说明
      • 集群审计
      • 配置已有集群
      • 安全组
    • 管理作业
      • 创建作业
      • 诊断、调优
      • 定时任务
      • 查看作业
    • 访问集群
      • 访问集群服务页面
      • 访问集群-openVPN访问集群
      • 使用OpenVPN提交Hadoop作业
      • SSH连接到集群
    • 实践操作
      • 存储数据至HBase
      • 导入数据
      • 编译Maven项目
      • Sqoop导入导出数据
        • 导出数据
    • 权限管理
      • 多用户访问控制
      • 用户管理
    • 集群管理
      • 节点管理
      • 监控报警
      • 集群指标
      • 资源管理
  • 服务等级协议SLA
    • BMR服务等级协议SLA
  • API参考
    • 通用说明
    • 公共头
    • 数据类型
    • 版本更新记录
    • 服务域名
    • 实例操作接口
    • 实例组操作接口
    • 集群操作接口
    • API简介
    • 错误码
  • 常见问题
    • 安全性问题
    • 计费类问题
    • 常见问题总览
    • 性能类问题
    • 配置类问题
    • 故障类问题
  • 视频专区
    • 操作指南
    • 产品介绍
  • 场景教程
    • 流式应用场景
    • 离线应用场景
    • 使用Hive分析网站日志
    • Sqoop应用文档
    • 定时分析日志数据
    • HIVE
      • 不同集群的 Hive 迁移方案
      • Hive 操作 Hbase 外部表
  • 产品定价
    • 转换计费方式
    • 计费项
    • 到期或欠费说明
    • 包年包月计费
    • 续费说明
    • 变更配置计费说明
    • 计费方式
    • 按需计费
    • 账单和用量查询
    • 退款说明
所有文档
menu
没有找到结果,请重新输入

MapReduce BMR

  • 发行版本
  • 功能发布记录
  • 产品描述
    • 节点类型说明
    • 产品优势
    • 应用场景
    • 产品功能
    • 产品简介
  • Python-SDK
    • Cluster(集群)
    • BmrClient
    • 异常处理
    • InstanceGroup(实例组)
    • 简介
    • 文档更新记录
    • Step(作业)
    • 版本变更记录
    • Instance(实例)
    • 快速入门
    • 安装SDK工具包
  • 开源组件介绍
    • Impala
    • Pig
    • Druid
    • Presto
    • Hue
    • Ooize
    • HBase
    • Kudu
    • Sqoop
    • Hadoop-Streaming
    • Zeppelin
    • Alluxio
    • Kerberos
      • 集群互信配置
      • 概述
    • ClickHouse
      • 常见问题
      • 数据迁移同步
        • 从Spark导入
        • 从Kafka同步数据
        • 将自建ClickHouse数据迁移到云ClickHouse中
        • 从Flink导入
        • 从MySQL导入和同步
        • 从本地数据导入
          • Parquet格式
          • JSON
          • SQL转储
          • CSV and TSV
      • 快速入门
        • 访问模式
        • 客户端登录
        • 创建ClickHouse集群
        • 基础操作
      • 运维相关操作
        • ClickHouse集群扩容
        • ClickHouse集群缩容
        • 日志配置说明
        • 监控告警配置
    • Ranger
      • ranger概述
      • 权限策略配置
    • Paimon
      • Hive示例
      • StarRocks示例
      • 联合查询示例
      • Flink示例
      • Spark示例
    • Flink
      • 基础使用
    • Trino
      • 基础使用
      • 概述
    • Spark
      • 引擎增强
      • 基础使用
    • Hive
      • 开发指南
        • 自定义函数(UDF)
      • 实践操作
        • Hive迁移
        • Hive操作HBase外表
      • 基础使用
        • Hive基础操作
        • Hive连接方式
  • Java-SDK
    • Cluster(集群)
    • 异常
    • BmrClient
    • InstanceGroup(实例组)
    • 日志
    • 文档更新记录
    • 版本更新记录
    • Step(作业)
    • Instance(实例)
    • 快速入门
    • 安装SDK工具包
    • 概述
  • 快速入门
    • 操作流程概览
    • 环境准备
    • 创建集群
    • 数据准备
    • 开发作业
    • 查看结果
    • ClickHouse
      • 导入数据
      • 创建数据库
      • 连接集群
      • 创建表
  • 操作指南
    • 集群模板
    • 服务管理
    • 集群配置
      • 用户管理
      • 弹性伸缩
      • 创建集群
      • 集群安全模式
      • EIP
      • Hive元数据说明
      • 集群审计
      • 配置已有集群
      • 安全组
    • 管理作业
      • 创建作业
      • 诊断、调优
      • 定时任务
      • 查看作业
    • 访问集群
      • 访问集群服务页面
      • 访问集群-openVPN访问集群
      • 使用OpenVPN提交Hadoop作业
      • SSH连接到集群
    • 实践操作
      • 存储数据至HBase
      • 导入数据
      • 编译Maven项目
      • Sqoop导入导出数据
        • 导出数据
    • 权限管理
      • 多用户访问控制
      • 用户管理
    • 集群管理
      • 节点管理
      • 监控报警
      • 集群指标
      • 资源管理
  • 服务等级协议SLA
    • BMR服务等级协议SLA
  • API参考
    • 通用说明
    • 公共头
    • 数据类型
    • 版本更新记录
    • 服务域名
    • 实例操作接口
    • 实例组操作接口
    • 集群操作接口
    • API简介
    • 错误码
  • 常见问题
    • 安全性问题
    • 计费类问题
    • 常见问题总览
    • 性能类问题
    • 配置类问题
    • 故障类问题
  • 视频专区
    • 操作指南
    • 产品介绍
  • 场景教程
    • 流式应用场景
    • 离线应用场景
    • 使用Hive分析网站日志
    • Sqoop应用文档
    • 定时分析日志数据
    • HIVE
      • 不同集群的 Hive 迁移方案
      • Hive 操作 Hbase 外部表
  • 产品定价
    • 转换计费方式
    • 计费项
    • 到期或欠费说明
    • 包年包月计费
    • 续费说明
    • 变更配置计费说明
    • 计费方式
    • 按需计费
    • 账单和用量查询
    • 退款说明
  • 文档中心
  • arrow
  • MapReduceBMR
  • arrow
  • 开源组件介绍
  • arrow
  • ClickHouse
  • arrow
  • 数据迁移同步
  • arrow
  • 从本地数据导入
  • arrow
  • Parquet格式
本页目录
  • Parquet格式
  • 从 Parquet 导入
  • 导入到现有表
  • 将本地文件插入到远程服务器
  • 从Parquet文件创建新表
  • 导出为Parquet格式
  • ClickHouse和Parquet数据类型

Parquet格式

更新时间:2025-08-21

Parquet格式

Parquet 是一种高效的文件格式,以列为单位存储数据。ClickHouse 提供对 Parquet 文件的读取和写入支持。

从 Parquet 导入

  1. 在加载数据之前,我们可以使用file()函数来探索示例 parquet 文件结构:
Plain Text
1DESCRIBE TABLE file('data.parquet', Parquet);
  1. 使用Parquet作为第二个参数,因此 ClickHouse 知道文件格式。这将打印具有以下类型的列:
Plain Text
1┌─name─┬─type─────────────┬─default_type─┬─default_expression─┬─comment─┬─codec_expression─┬─ttl_expression─┐
2│ path │ Nullable(String) │              │                    │         │                  │                │
3│ date │ Nullable(String) │              │                    │         │                  │                │
4│ hits │ Nullable(Int64)  │              │                    │         │                  │                │
5└──────┴──────────────────┴──────────────┴────────────────────┴─────────┴──────────────────┴────────────────┘
  1. 还可以在实际导入数据之前利用SQL的所有功能搜索文件:
Plain Text
1SELECT *
2FROM file('data.parquet', Parquet)
3LIMIT 3;
Plain Text
1┌─path──────────────────────┬─date───────┬─hits─┐
2│ Akiba_Hebrew_Academy      │ 2017-08-01 │  241 │
3│ Aegithina_tiphia          │ 2018-02-01 │   34 │
4│ 1971-72_Utah_Stars_season │ 2016-10-01 │    1 │
5└───────────────────────────┴────────────┴──────┘

导入到现有表

  1. 创建一个表,将 Parquet 数据导入其中:
Plain Text
1CREATE TABLE sometable
2(
3    `path` String,
4    `date` Date,
5    `hits` UInt32
6)
7ENGINE = MergeTree
8ORDER BY (date, path);
  1. 使用以下FROM INFILE句子导入数据:
Plain Text
1INSERT INTO sometable
2FROM INFILE 'data.parquet' FORMAT Parquet;
3
4SELECT *
5FROM sometable
6LIMIT 5;
Plain Text
1┌─path──────────────────────────┬───────date─┬─hits─┐
2│ 1988_in_philosophy            │ 2015-05-01 │   70 │
3│ 2004_Green_Bay_Packers_season │ 2015-05-01 │  970 │
4│ 24_hours_of_lemans            │ 2015-05-01 │   37 │
5│ 25604_Karlin                  │ 2015-05-01 │   20 │
6│ ASCII_ART                     │ 2015-05-01 │    9 │
7└───────────────────────────────┴────────────┴──────┘

请注意ClickHouse如何自动将Parquet字符串(在date列中)转换为Date类型。这是因为 ClickHouse 根据目标表中的类型自动进行类型转换。

将本地文件插入到远程服务器

如果要将本地 Parquet 文件插入到远程 ClickHouse 服务器,可以通过将文件内容导入来实现clickhouse-client,如下所示:

Plain Text
1clickhouse client -q "INSERT INTO sometable FORMAT Parquet" < data.parquet

从Parquet文件创建新表

  1. 从Parquet文件创建新表:
Plain Text
1CREATE TABLE imported_from_parquet
2ENGINE = MergeTree
3ORDER BY tuple() AS
4SELECT *
5FROM file('data.parquet', Parquet)
  1. 自动从给定的Parquet文件创建和填充表格:
Plain Text
1DESCRIBE TABLE imported_from_parquet;
Plain Text
1┌─name─┬─type─────────────┬─default_type─┬─default_expression─┬─comment─┬─codec_expression─┬─ttl_expression─┐
2│ path │ Nullable(String) │              │                    │         │                  │                │
3│ date │ Nullable(String) │              │                    │         │                  │                │
4│ hits │ Nullable(Int64)  │              │                    │         │                  │                │
5└──────┴──────────────────┴──────────────┴────────────────────┴─────────┴──────────────────┴────────────────┘

默认情况下,ClickHouse 对列名、类型和值的要求很严格。但有时,我们可以在导入过程中跳过不存在的列或不支持的值。

导出为Parquet格式

  1. 要将任何表或查询结果导出到Parquet文件,可以使用以下INTO OUTFILE句子:
Plain Text
1SELECT *
2FROM sometable
3INTO OUTFILE 'export.parquet'
4FORMAT Parquet

ClickHouse和Parquet数据类型

  1. ClickHouse 和 Parquet 数据类型大部分相同,但仍有一点不同。例如,ClickHouse 将DateTime类型导出为 Parquets' int64。如果将其导入回 ClickHouse,将看到:
Plain Text
1SELECT * FROM file('time.parquet', Parquet);
Plain Text
1┌─n─┬───────time─┐
2│ 0 │ 1673622611 │
3│ 1 │ 1673622610 │
4│ 2 │ 1673622609 │
5│ 3 │ 1673622608 │
6│ 4 │ 1673622607 │
7└───┴────────────┘

2.在这种情况下可以使用类型转换:

Plain Text
1SELECT
2    n,
3    toDateTime(time)                 <--- int to time
4FROM file('time.parquet', Parquet);
Plain Text
1┌─n─┬────toDateTime(time)─┐
2│ 0 │ 2023-01-13 15:10:11 │
3│ 1 │ 2023-01-13 15:10:10 │
4│ 2 │ 2023-01-13 15:10:09 │
5│ 3 │ 2023-01-13 15:10:08 │
6│ 4 │ 2023-01-13 15:10:07 │
7└───┴─────────────────────┘

上一篇
从MySQL导入和同步
下一篇
JSON