ORC格式文件

ORC文件

一、ORC储存格式

ORC的全称是(Optimized Record Columnar),优化后的列式记录,ORC在RCFile的基础上进行了一定的改进,所以与RCFile相比,具有以下一些优势:

  • ORC中的特定的序列化与反序列化操作可以使ORC file writer根据数据类型进行写出。
  • 提供了多种RCFile中没有的indexes,这些indexes可以使ORC的reader很快的读到需要的数据,并且跳过无用数据,这使得ORC文件中的数据可以很快的得到访问。
  • 由于ORC file writer可以根据数据类型进行写出,所以ORC可以支持复杂的数据结构(比如Map, Struct等)。
  • ORC的stripe默认大小更大,为ORC writer提供了一个memory manager来管理内存使用情况。

二、ORC数据存储方法

图1 ORC文件结构图

在ORC格式的hive表中,数据首先会被按照行切分成多个stripes,之后在每个stripe内数据按列为单位进行存储,所有列的内容都保存在同一个文件中。每个stripe的大小默认为256MB, 与RCFile的4MB的stripe相比, ORC格式的文件读取更加高效。
对于复杂的数据类型,比如Map,ORC文件会将一个复杂数据类型字段解析成多个子字段。如下表所示:

date typechild columns
Array一个包含数组所有元素的子字段
Map两个子字段,一个key字段,一个value字段
Struct每一个属性对应一个子字段
Union每一个属性对应一个子字段

当字段类型都被解析后,会由这些字段类型组成一个字段树,只有树的叶子节点才会保存表数据,这些叶子节点中的数据形成一个数据流,如上图中的Data Stream。
  为了使ORC文件的reader更加高效的读取数据,字段的metadata会保存在Meta Stream中。在字段树中,每一个非叶子节点记录的就是字段的metadata,比如对一个array来说,会记录它的长度。下图根据表的字段类型生成了一个对应的字段树。
  在这里插入图片描述

参考资料

http://lxw1234.com/archives/2016/04/630.htm

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ORC文件导入MySQL可以通过以下步骤完成: 1. 使用HiveORC文件导出为CSV格式文件。 2. 使用MySQL的LOAD DATA INFILE语句将CSV文件加载到MySQL表中。 以下是具体步骤: 1. 使用HiveORC文件导出为CSV格式文件: 首先,启动Hive shell并连接到Hive服务器: ``` hive ``` 连接到Hive服务器后,使用以下命令将ORC文件导出为CSV格式文件: ``` INSERT OVERWRITE LOCAL DIRECTORY '/tmp/csv' ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' SELECT * FROM orc_table; ``` 这将导出ORC文件中的所有行并将它们保存为逗号分隔的CSV文件。请注意,此命令将CSV文件保存在本地文件系统的/tmp/csv目录中。 2. 使用MySQL的LOAD DATA INFILE语句将CSV文件加载到MySQL表中: 在MySQL中创建一个表,使其与CSV文件的列匹配。例如,如果CSV文件有三列,分别为col1、col2和col3,而MySQL表也有三列,则可以使用以下命令创建MySQL表: ``` CREATE TABLE mysql_table (col1 varchar(255), col2 varchar(255), col3 varchar(255)); ``` 然后,使用以下命令将CSV文件加载到MySQL表中: ``` LOAD DATA INFILE '/tmp/csv' INTO TABLE mysql_table FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'; ``` 这将将CSV文件的所有行加载到MySQL表中。请注意,此命令假定CSV文件包含逗号分隔的数据并以换行符结尾。如果CSV文件使用不同的分隔符和/或行终止符,请相应地更改LOAD DATA INFILE语句。 完成这两个步骤后,您应该能够成功将ORC文件导入到MySQL表中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值