ORC文件存储格式和Hive创建ORC表

Hive(31):将txt数据导入ORC格式表 一、实现功能 将txt或者csv数据加载到orc格式的hive中,因为不能直接创建orc类型数据,而直接将txt(csv)数据load进入orc表,会报错。所以,需要创建一个textfile格式中间表。 二、实例 1.创建textfile临时表: create table if not exists people_orc_txt( name string, gender string ) row format delimited fields terminated by ',' sto 阅读详情

首发于: https://www.jwldata.com/archives/134.html

ORC的优点

The Optimized Row Columnar (ORC) file format provides a highly efficient way to store Hive data. It was designed to overcome limitations of the other Hive file formats. Using ORC files improves performance when Hive is reading, writing, and processing data.

Compared with RCFile format, for example, ORC file format has many advantages such as:

  • a single file as the output of each task, which reduces the NameNode’s load
  • Hive type support including datetime, decimal, and the complex types (struct, list, map, and union)
  • light-weight indexes stored within the file
    • skip row groups that don’t pass predicate filtering
    • seek to a given row
  • block-mode compression based on data type
    • run-length encoding for integer columns
    • dictionary encoding for string columns
  • concurrent reads of the same file using separate RecordReaders
  • ability to split files without scanning for markers
  • bound the amount of memory needed for reading or writing
  • metadata stored using Protocol Buffers, which allows addition and removal of fields

ORC文件结构

ORC文件由stripe,file footer,postscript组成。

  • file footer
    contains a list of stripes in the file, the number of rows per stripe, and each column’s data type. It also contains column-level aggregates count, min, max, and sum.
  • postscript
    holds compression parameters and the size of the compressed footer.
  • stripe
    each stripe in an ORC file holds index data, row data, and a stripe footer.
    index data includes min and max values for each column and the row positions within each column.
    stripe footer contains a directory of stream locations.
    row data is used in table scans.

Hive Table properties

The parameters placed in the TBLPROPERTIES.

KeyDefaultNotes
orc.compressZLIBhigh level compression = {NONE, ZLIB, SNAPPY}
orc.compress.size262,144compression chunk size(number of bytes), 0.25MB
orc.stripe.size67,108,864memory buffer in bytes for writing(number of bytes), 64MB
orc.row.index.stride10,000number of rows between index entries
orc.create.indextruecreate indexes?
orc.bloom.filter.columns””comma separated list of column names
orc.bloom.filter.fpp0.05bloom filter false positive rate (must >0.0 and <1.0)

创建ORC表

CREATE TABLE IF NOT EXISTS bank.account_orc (
  `id_card` int,
  `tran_time` string,
  `name` string,
  `cash` int
  )
partitioned by(ds string)
stored as orc;

不加orc.compression,默认为ZLIB压缩。另外,还支持设置orc.compress为NONE, Snappy。

查询ORC建表语句

SHOW CREATE TABLE bank.account_orc;

CREATE TABLE `bank.account_orc`(
  `id_card` int, 
  `tran_time` string, 
  `name` string, 
  `cash` int)
PARTITIONED BY ( 
  `ds` string)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.ql.io.orc.OrcSerde' 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'
LOCATION
  'hdfs://nameservice1/user/hive/warehouse/bank.db/account_orc'
TBLPROPERTIES (
  'transient_lastDdlTime'='1627435885')

往ORC表插入样本数据

INSERT INTO bank.account_orc partition(ds='2020-09-21') values (1000, '2020-09-21 14:30:00', 'Tom', 100);
INSERT INTO bank.account_orc partition(ds='2020-09-20') values (1000, '2020-09-20 14:30:05', 'Tom', 50);
INSERT INTO bank.account_orc partition(ds='2020-09-20') values (1000, '2020-09-20 14:30:10', 'Tom', -25);
INSERT INTO bank.account_orc partition(ds='2020-09-21') values (1001, '2020-09-21 15:30:00', 'Jelly', 200);
INSERT INTO bank.account_orc partition(ds='2020-09-21') values (1001, '2020-09-21 15:30:05', 'Jelly', -50);

查询底层文件

[root@jwldata.com ~]# hadoop fs -ls /user/hive/warehouse/bank.db/account_orc/ds=2020-09-20                     
Found 2 items
-rwxrwx--x+  3 hive hive        519 2021-07-28 09:33 /user/hive/warehouse/bank.db/account_orc/ds=2020-09-20/000000_0
-rwxrwx--x+  3 hive hive        519 2021-07-28 09:34 /user/hive/warehouse/bank.db/account_orc/ds=2020-09-20/000000_0_copy_1
[root@jwldata.com ~]# 
[root@jwldata.com ~]# hadoop fs -ls /user/hive/warehouse/bank.db/account_orc/ds=2020-09-21
Found 3 items
-rwxrwx--x+  3 hive hive        516 2021-07-28 09:32 /user/hive/warehouse/bank.db/account_orc/ds=2020-09-21/000000_0
-rwxrwx--x+  3 hive hive        528 2021-07-28 09:34 /user/hive/warehouse/bank.db/account_orc/ds=2020-09-21/000000_0_copy_1
-rwxrwx--x+  3 hive hive        528 2021-07-28 09:35 /user/hive/warehouse/bank.db/account_orc/ds=2020-09-21/000000_0_copy_2

查询ORC文件的元数据

hive --orcfiledump hdfs:///user/hive/warehouse/bank.db/account_orc/ds=2020-09-20/000000_0

[root@jwldata.com ~]# hive --orcfiledump hdfs:///user/hive/warehouse/bank.db/account_orc/ds=2020-09-20/000000_0
Structure for hdfs:///user/hive/warehouse/bank.db/account_orc/ds=2020-09-20/000000_0
File Version: 0.12 with HIVE_8732
21/07/28 09:52:12 INFO orc.ReaderImpl: Reading ORC rows from hdfs:/user/hive/warehouse/bank.db/account_orc/ds=2020-09-20/000000_0 with {include: null, offset: 0, length: 9223372036854775807}
Rows: 1
Compression: ZLIB
Compression size: 262144
Type: struct<_col0:int,_col1:string,_col2:string,_col3:int>

Stripe Statistics:
  Stripe 1:
    Column 0: count: 1 hasNull: false
    Column 1: count: 1 hasNull: false min: 1000 max: 1000 sum: 1000
    Column 2: count: 1 hasNull: false min: 2020-09-20 14:30:05 max: 2020-09-20 14:30:05 sum: 19
    Column 3: count: 1 hasNull: false min: Tom max: Tom sum: 3
    Column 4: count: 1 hasNull: false min: 50 max: 50 sum: 50

File Statistics:
  Column 0: count: 1 hasNull: false
  Column 1: count: 1 hasNull: false min: 1000 max: 1000 sum: 1000
  Column 2: count: 1 hasNull: false min: 2020-09-20 14:30:05 max: 2020-09-20 14:30:05 sum: 19
  Column 3: count: 1 hasNull: false min: Tom max: Tom sum: 3
  Column 4: count: 1 hasNull: false min: 50 max: 50 sum: 50

Stripes:
  Stripe: offset: 3 data: 53 rows: 1 tail: 65 index: 136
    Stream: column 0 section ROW_INDEX start: 3 length 11
    Stream: column 1 section ROW_INDEX start: 14 length 27
    Stream: column 2 section ROW_INDEX start: 41 length 45
    Stream: column 3 section ROW_INDEX start: 86 length 29
    Stream: column 4 section ROW_INDEX start: 115 length 24
    Stream: column 1 section DATA start: 139 length 7
    Stream: column 2 section DATA start: 146 length 22
    Stream: column 2 section LENGTH start: 168 length 6
    Stream: column 3 section DATA start: 174 length 6
    Stream: column 3 section LENGTH start: 180 length 6
    Stream: column 4 section DATA start: 186 length 6
    Encoding column 0: DIRECT
    Encoding column 1: DIRECT_V2
    Encoding column 2: DIRECT_V2
    Encoding column 3: DIRECT_V2
    Encoding column 4: DIRECT_V2

File length: 519 bytes
Padding length: 0 bytes
Padding ratio: 0%

查询ORC文件的数据

hive --orcfiledump -d hdfs:///user/hive/warehouse/bank.db/account_orc/ds=2020-09-20/000000_0

[root@jwldata.com ~]# hive --orcfiledump -d hdfs:///user/hive/warehouse/bank.db/account_orc/ds=2020-09-20/000000_0
21/07/28 09:53:08 INFO orc.ReaderImpl: Reading ORC rows from hdfs:/user/hive/warehouse/bank.db/account_orc/ds=2020-09-20/000000_0 with {include: null, offset: 0, length: 9223372036854775807}
{"_col0":1000,"_col1":"2020-09-20 14:30:05","_col2":"Tom","_col3":50}
[root@jwldata.com ~]# 
[root@jwldata.com ~]# hive --orcfiledump -d hdfs:///user/hive/warehouse/bank.db/account_orc/ds=2020-09-20/000000_0_copy_1
21/07/28 09:53:50 INFO orc.ReaderImpl: Reading ORC rows from hdfs:/user/hive/warehouse/bank.db/account_orc/ds=2020-09-20/000000_0_copy_1 with {include: null, offset: 0, length: 9223372036854775807}
{"_col0":1000,"_col1":"2020-09-20 14:30:10","_col2":"Tom","_col3":-25}

创建ORC表+Snappy压缩

CREATE TABLE IF NOT EXISTS bank.account_orc_snappy (
  `id_card` int,
  `tran_time` string,
  `name` string,
  `cash` int
  )
partitioned by(ds string)
stored as orc
TBLPROPERTIES ("orc.compression"="SNAPPY");

查询ORC带Snappy压缩的建表语句

SHOW CREATE TABLE bank.account_orc_snappy;

CREATE TABLE `bank.account_orc_snappy`(
  `id_card` int, 
  `tran_time` string, 
  `name` string, 
  `cash` int)
PARTITIONED BY ( 
  `ds` string)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.ql.io.orc.OrcSerde' 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'
LOCATION
  'hdfs://nameservice1/user/hive/warehouse/bank.db/account_orc_snappy'
TBLPROPERTIES (
  'orc.compression'='SNAPPY', 
  'transient_lastDdlTime'='1627542655')

参考文档

  • https://cwiki.apache.org/confluence/display/Hive/LanguageManual+ORC
  • https://orc.apache.org/specification/ORCv1/
  • https://blog.youkuaiyun.com/dabokele/article/details/51542327
  • https://blog.youkuaiyun.com/dabokele/article/details/51813322

欢迎关注我的微信公众号“九万里大数据”,原创技术文章第一时间推送。
欢迎访问原创技术博客网站 jwldata.com,排版更清晰,阅读更爽快。

Hive存储格式之ORC File详解,什么是ORC File ORC并不是一个单纯的列式存储格式,它也遵循了先水平分区,再垂直分区的理念,采用混合存储结构。 除了Hive,目前也被Spark SQL,Flink,Presto,Impala等查询引擎支持。 阅读详情

相关推荐

Hive学习笔记 --- Hive文件存储格式

Hive学习笔记 --- Hive文件存储格式

杨鑫newlife的专栏 1294

HIVE表数据快速构造(分区表、orc、text)

快速可视化创建hive表,并导入数据

qy_getforward的博客 2808

RimWorld Mod开发避坑指南:从Defs命名规范到XML结构详解(附实战代码)

本文深入解析RimWorld Mod开发中Defs文件的编写规范与高级技巧,涵盖命名冲突预防、XML结构优化及高级功能实现。通过实战代码示例,帮助开发者避开常见陷阱,提升Mod兼容性与稳定性,特别适合RimWorld Mod开发者参考。

weixin_30790841的博客 450

HIVE数据库创建ORC事物表

HIVE数据库创建ORC事务表

svnsl的博客 4222

TwinCAT3 Modbus-TCP Client/Server使用

/起始地址是12289//起始地址是12294。

panjinliang066333的博客 7733

16G显存+llama.cpp跑大模型的黄金配置指南

大语言模型(LLM)本地部署的核心瓶颈在于显存与推理效率的平衡。llama.cpp作为轻量级C/C++推理引擎,通过GGUF模型格式、量化压缩(如Q4_K_M)和CUDA底层优化,显著降低GPU资源需求。在消费级硬件中,16G显存成为兼顾模型能力(如Qwen3-4B、Llama-3-8B)、长上下文支持(4K token)与系统稳定性的关键阈值。它既规避了12G显存的容量焦虑,又绕开了24G高端卡的成本与散热负担,特别适合Windows 11原生环境下的生产级AI应用,如RAG、智能客服与文档分析。

weixin_32629853的博客 405

Hive 创建不同压缩方式的ORC存储格式表

目录 创建一个非压缩的的ORC存储方式表 创建一个snappy压缩的ORC存储方式表 创建一个ZLIB压缩的ORC存储方式表(默认方式) 存储方式和压缩总结 使用压缩的优势是可以最小化所需要的磁盘存储空间,以及减少磁盘和网络io操作 ​​​​​​​ORC支持三种压缩:ZLIB,SNAPPY,NONE。最后一种就是不压缩,orc默认采用的是ZLIB压缩。 创建一个非压缩的的ORC存储方式表 create table log_orc_none ( track_time string, url

weixin_41717034的博客 3137

实例讲解CANoe报文解析使用方法

在日常工作中,经常需要分析车辆产生故障的原因,在电动汽车中,分布式控制器及线束在其中某一个地方出现问题,就有可能造成车辆故障,但是由于电气零件无法直观的观察到哪个部位发生了故障,所以要借助工具测量电气变量或者采集报文信息通过分析,解析出故障原因,从而为车辆的开发,测试,维修提供支持。其中汽车行业最通用的通讯方式就是CAN通讯,本文针对使用CANoe对CAN报文离线分析的使用方法做详细介绍。

qq_43011586的博客 1万+

hive表orc文件结构解析

orc文件提供了多级别的索引:文件级别file footer-,条带级别stripe,行级别...提高了查询效率。

Echoyuntingzhu的博客 1421

矩阵束(Matrix Pencil)入门:从通信系统到控制理论,它为何是建模利器?

本文深入探讨矩阵束(Matrix Pencil)在通信系统与控制理论中的关键作用,揭示其作为复杂系统建模利器的独特价值。从MIMO系统的多径干扰分析到电力系统稳定性判据,矩阵束通过`A-λB`方程求解提供精准建模方案,显著提升5G通信和工业控制等领域的性能表现。

weixin_30134145的博客 358

YOLOv11改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 RepViT 轻量级的Vision Transformers架构

本文记录的是基于RepVit的YOLOv11轻量化改进方法研究。RepVit的网络结构借鉴ViT的设计理念,通过分离的token mixe和减少推理时的计算和内存成本,同时减少扩展比率并增加宽度,降低延迟,并通过来弥补参数大幅减少的问题,提高了准确性。本文在替换骨干网络中配置了原论文中的和五种模型,以满足不同的需求。

Limiiiing的博客 2975

Hive实战-表创建

ORC的全称是(Optimized Row Columnar),ORC文件格式是一种Hadoop生态圈中的列式存储格式。通过实测,储存空间被压缩为默认的1/3。对比默认数据储存格式。

Hanhahahahah的博客 916

QGIS将经纬度坐标转成点

QGIS绘制一张地图

weixin_46713695的博客 6056

Hive编程指南-表创建、内部表、外部表

摘要:本文主要介绍了Hive创建表的一些知识,包含内部表、外部表、分区和分桶等。

Evankaka的专栏 5521

【全网首发】2026华为OD双机位C卷 机考真题题库含考点说明以及在线OJ (Java)

如果你收到的是双机位C卷考试通知,需要针对性地调整备考策略。自2025年11月19日起,华为OD机试已正式从双机位A卷切换至。复杂度明显提升,需要组合多个算法点。题面相对简单,直接考查编程基本功。考查问题分析、算法选择和优化能力。通常为1-2个核心算法点的应用。

算法大师! 165

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【Hive】hive表的文件存储格式

在Hive中,文件的存储格式主要有:TEXTFILE、SEQUENCEFILE、ORC、PARQUET。 其中,TEXTFILE、SEQUENCEFILE是基于行存储,ORC、PARQUET基于列存储。 实际生产环境,使用ORC和PARQUET的情况比较多。 1. 行存储和列存储 上图中左边为逻辑表,右上为行存储,右下为列存储。 当查询结果为一整行的时候,行存储效率会高一些;当查询表中某几列时,列存储的效率会更高。 在对数据的压缩方面,列存储比行存储更有优势,所以列存储占用空间相对小一些。 2. TEXT

Just Do IT 3472

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

创建带压缩格式的orc表

创建表时添加一些两个选项 文件存储格式: [STORED AS file_format] file_format: : SEQUENCEFILE | TEXTFILE -- (Default, depending on hive.default.fileformat configuration) | RCFILE -- (Note: Available ...

weixin_33872566的博客 457

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

hive-11hive表的数据压缩和存储

hive表的数据压缩hive的压缩数据压缩的评价常见的压缩格式Hadoop编码/解码器方式压缩性能的比较压缩配置参数开启Map输出阶段压缩开启Reduce输出阶段压缩压缩格式的选择HIve表的文件存储格式列式存储和行式存储TEXTFILE格式ORC格式ORC格式的读取PARQUET格式存储文件的查询速度测试存储和压缩结合创建一个非压缩的的ORC存储方式创建一个SNAPPY压缩的ORC存储方式存储方式和压缩总结: hive的压缩 数据压缩的评价 可使用以下三种标准对压缩方式进行评价 压缩比:压缩比越高,压缩

a3125504x的博客 505

hive修改存储格式-orc格式回退为text

hive支持了几种常用的存储格式, 比如textfile, orc, rcfile, parquet等 各自的特性就不说了, 请参考官网或者其他博客. 因一些特殊原因, 创建表时将表格式设置为orc了, 但后续数据源从其他地方导入, 是文本类型(txt/tsv/csv等常见格式), 要回退表的存储类型为text, 怎么办? 三步: 修改文件存储类型(set fileformat) 修改列分隔符(set serdeproperties) 重建对应分区 代码: alter table tbl set fil

qiqi的专栏 6802

hive笔记(九):压缩和存储-Hadoop压缩配置/map、reduce输出阶段压缩/文件存储格式/textfile、parquet、orc

Hadoop的编码/解码器压缩性能的比较注:Snappy的压缩速度和解压速度都非常快。 开启map输出阶段压缩可以减job中map和Reduce task间数据传输量。 当Hive将输出写入到表中时 , 输出内容可以进行压缩,属性hive.exec.compress.output控制着这个功能。用户保持默认设置中的默认值false,输出的就是非压缩的纯文本文件。用户可以通过在查询语句或执行脚本中设置这个值为true来开启输出结果压缩功能。

qq_55906442的博客 745

Hive

Hive基本概念 什么是Hive Hive:由Facebook开源用于解决海量结构化日志的数据统计。Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。本质是:将HQL转化成MapReduce程序 Hive的优缺点 1)操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手)。 2)避免了去写MapReduce,减少开发人员的学习成本。 Hive优势在于处理大数据,对于处理小数据没有优势 5)Hive支持用户自定义函数,用户可以根据自己的需求来实

qq_17555249的博客 674

Hive文件存储格式(TEXTFILE 、ORC、PARQUET三者的存储格式的压缩对比和查询速度对比)

综述: HIve的文件存储格式有四种:TEXTFILE、SEQUENCEFILE、ORC、PARQUET,前面两种是行式存储,后面两种是列式存储;所谓的存储格式就是在Hive建表的时候指定的将表中的数据按照什么样子的存储方式,如果指定了A方式,那么在向表中插入数据的时候,将会使用该方式向HDFS中添加相应的数据类型。 如果为textfile的文件格式,直接load就OK,不需要走MapRed......

isea_you's blog 2万+

将本地文件导入到Hive表中(支持 TEXTFILE 、ORC 等存储格式)

1、hive表格式为TEXTFILE 由于 TEXTFILE 格式没有对数据进行压缩,因此直接 load 即可。 假设本地有一个文件 test_person.txt,内容为: Gong 24 Tian 23 想要将其导入到 TEXTFILE 格式的 tmp_test_person_txt 表内,步骤如下: 1.1、创建目标表,格式为 TEXTFILE 在 hive 命令行下,输入建表语句: hi...

HappyRocking的专栏 1万+

Hive数仓中存储格式ORC和Parquet,压缩方式LZO和Snappy

在数仓中,建议大家除了接口表(从其他数据库导入或者是最后要导出到其他数据库的表),其余表的存储格式与压缩格式保持一致。 我们先来说一下目前Hive表主流的存储格式与压缩方式 文件存储格式 从Hive官网得知,Apache Hive支持Apache Hadoop中使用的几种熟悉的文件格式,如TextFile(文本格式),RCFile(行列式文件),SequenceFile(二进制序列化文件),AVRO,ORC(优化的行列式文件)和Parquet格式,而这其中我们目前使用最多的是TextFile,Se..

帅成一匹马 1万+

Hive文件存储格式(TEXTFILE 、ORC、PARQUET三者的对比)

Hive文件存储格式(TEXTFILE 、ORC、PARQUET三者的对比) 综述: HIve的文件存储格式有四种:TEXTFILE、SEQUENCEFILE、ORC、PARQUET,前面两种是行式存储,后面两种是列式存储;所谓的存储格式就是在Hive建表的时候指定的将表中的数据按照什么样子的存储方式,如果指定了A方式,那么在向表中插入数据的时候,将会使用该方式向HDFS中添加相应的数据类型。 如果为textfile的文件格式,直接load就OK,不需要走MapReduce;如果是其他的类型就需要走Ma.

9460

Hive 的文件存储格式怎么选择?

前言 本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见1000个问题搞定大数据技术体系 正文 说明 Hive支持的存储数的格式常见的有: TEXTFILE 、 SEQUENCEFILE 、 ORC 、 PARQUET 。 其中 TEXTFILE 为默认格式,建表时默认为这个格式,导入数据时会直接把数据文件拷贝到 hdfs 上不进行处理。 SEQUENCEFILE 、 ORC 、 PARQUE

Shockang的博客 3万+
上一篇: 真正免费的证件照小程序,在线一键生成标准免冠证件照,证件照底色更换,证件照尺寸修改
下一篇: 证件照换底色很简单,不用PS不用跑照相馆,支持渐变色背景,超级实用!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值