ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
Hive常用的几种文件存储方式。 <br/> **1. TextFile** (1)Hive 数据表的默认格式,存储方式:行存储。默认数据不做压缩,磁盘开销大,数据解析开销大。 (2)可以使用 Gzip 压缩算法,但压缩后的文件不支持 split ,在反序列化过程中,必须逐个字符判断是不是分隔符和行结束符,因此反序列化开销会比 SequenceFile 高几十倍。 <br/> **2.Sequence Files** (1)支持分割的文件可以并行的有多个 mapper 程序处理大数据文件,大多数文件不支持可分割是因为这些文件只能从头开始读。 (2)Sequence File 是可分割的文件格式,支持 Hadoop 的 block 级压缩。 (3)Hadoop API 提供的一种二进制文件,以 key-value 的形式序列化到文件中。 (4)存储方式:行存储。 sequencefile 支持三种压缩选择:NONE,RECORD,BLOCK。Record(默认) 压缩率低,通常 BLOCK 会带来较 RECORD 更好的压缩性能。 优势是文件和 hadoop api 中的 MapFile 是相互兼容的。 <br/> **3. RCFile** 存储方式:数据按行分块,每块按列存储。结合了行存储和列存储的优点。 <br/> 首先,RCFile 保证同一行的数据位于同一节点,因此元组重构的开销很低; 其次,像列存储一样,RCFile 能够利用列维度的数据压缩,并且能跳过不必要的列读取数据追加; <br/> 数据追加:RCFile 不支持任意方式的数据写操作,仅提供一种追加接口,这是因为底层的 HDFS 当前仅仅支持数据追加写文件尾部。 行组大小:行组变大有助于提高数据压缩的效率,但是可能会损害数据的读取性能,因为这样增加了 Lazy 解压性能的消耗。而且行组变大会占用更多的内存,这会影响并发执行的其他 MR 作业。 <br/> **4. ORCFile** 存储方式:数据按行分块,每块按照列存储。 <br/> 压缩快,快速列存取。效率比 rcfile 高,是 rcfile 的改良版本。 ORC 是在一定程度上扩展了 RCFile,是对 RCFile 的优化。 * ORC 是列式存储,有多种文件压缩方式,并且有着很高的压缩比。 * 文件是可切分(Split)的。因此,在 Hive 中使用 ORC 作为表的文件存储格式,不仅节省 HDFS 存储资源,查询任务的输入数据量减少,使用的MapTask 也就减少了。 * 提供了多种索引,row group index、bloom filter index。 * ORC 可以支持复杂的数据结构(比如 Map 等) ```sql create table a_orc ( customerid int, name string, age int, address string ) stored as orc tblproperties ("orc.compress" = "snappy"); ``` <br/> **5.Parquet** Parquet 也是一种行式存储,同时具有很好的压缩性能;同时可以减少大量的表扫描和反序列化的时间。