Apache Hive 存储方式、压缩格式
简介:
Apache hive 存储方式跟压缩格式!
1、Text File
- hive> create external table tab_textfile (
- host string comment 'client ip address',
- local_time string comment 'client access time',
- api string comment 'request api',
- request_type string comment 'request method, http version',
- http_code int, body_bytes int, request_body map<string, string>,
- referer string, user_agent string, upstr string, response_time string, request_time string)
- ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' COLLECTION ITEMS TERMINATED BY '&' MAP KEYS TERMINATED BY '=';
- OK
- Time taken: 0.162 seconds
# 创建一张 Text File 存储格式、不压缩的外部表
- hive> load data local inpath '/data/logs/api/201711/tvlog_20171101/bftvapi.20171101.log' overwrite into table tab_textfile;
- Loading data to table tmpdb.tab_textfile
- OK
- Time taken: 1015.974 seconds
# 原始文件 9.8G,加载到该表中需要花费 1015.974 秒 ( 这里可以优化,不使用 load 指令,直接 put 文件到数据表目录 )
- hive> select count(*) from tab_textfile;
- ...
- Stage-Stage-: Map: Reduce: Cumulative CPU: 269.51 sec HDFS Read: HDFS Write: SUCCESS
- Total MapReduce CPU Time Spent: minutes seconds msec
- OK
- Time taken: 95.68 seconds, Fetched: row(s)
# 总共 27199202 行数据,用时 95.68 秒
# 优化点:set [ hive.exec.reducers.bytes.per.reducer=<number>, hive.exec.reducers.max=<number>, mapreduce.job.reduces=<number> ]
2、ORC File
# 官方文档:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+ORC
# ORC文档:https://orc.apache.org/docs
- hive> create external table tab_orcfile (
- host string comment 'client ip address',
- local_time string comment 'client access time',
- api string comment 'request api',
- request_type string comment 'request method, http version',
- http_code int, body_bytes int, request_body map<string, string>,
- referer string, user_agent string, upstr string, response_time string, request_time string)
- ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' COLLECTION ITEMS TERMINATED BY '&' MAP KEYS TERMINATED BY '='
- STORED AS ORC tblproperties ("orc.compress"="NONE");
- OK
- Time taken: 0.058 seconds
# 创建一张 ORC File 存储格式、不压缩的外部表
- hive> insert overwrite table tab_orcfile select * from tab_textfile;
- ...
- Stage-Stage-: Map: Cumulative CPU: 2290.24 sec HDFS Read: HDFS Write: SUCCESS
- Total MapReduce CPU Time Spent: minutes seconds msec
- OK
- Time taken: 289.954 seconds
# 向 tab_orcfile 中加载数据,注意:ORC File 不能直接 load data !!!
# 可以先创建 Text File 的临时表,将数据手动上传到该表指定目录,然后转换成 ORC File 格式。
- hive> select count(*) from tab_orcfile;
- OK
- Time taken: 2.555 seconds, Fetched: row(s)
# 额,同样的语句,上面执行花费 95.68 秒,现在只要 2.555 秒。
# 换一种方式测试,先查 tab_orcfile 表,然后再查 tab_textfile 表。
- hive> select count(host) from tab_orcfile;
- ...
- Stage-Stage-: Map: Reduce: Cumulative CPU: 81.02 sec HDFS Read: HDFS Write: SUCCESS
- Total MapReduce CPU Time Spent: minutes seconds msec
- OK
- Time taken: 33.55 seconds, Fetched: row(s)
# ORC File 花费 33.55 秒
- hive> select count(host) from tab_textfile;
- ...
- Stage-Stage-: Map: Reduce: Cumulative CPU: 349.77 sec HDFS Read: HDFS Write: SUCCESS
- Total MapReduce CPU Time Spent: minutes seconds msec
- OK
- Time taken: 87.308 seconds, Fetched: row(s)
# Text File 花费 87.308 秒,高下立见!
3、启用压缩
# ORC 文档:https://orc.apache.org/docs/hive-config.html
- hive> create external table tab_orcfile_zlib (
- host string comment 'client ip address',
- local_time string comment 'client access time',
- api string comment 'request api',
- request_type string comment 'request method, http version',
- http_code int, body_bytes int, request_body map<string, string>,
- referer string, user_agent string, upstr string, response_time string, request_time string)
- ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' COLLECTION ITEMS TERMINATED BY '&' MAP KEYS TERMINATED BY '='
- STORED AS ORC;
# 默认的 ORC 压缩方式为 ZLIB,还支持 LZO、SNAPPY 等
- hive> insert overwrite table tab_orcfile_zlib select * from tab_textfile;
- ...
- Stage-Stage-: Map: Cumulative CPU: 2344.68 sec HDFS Read: HDFS Write: SUCCESS
- Total MapReduce CPU Time Spent: minutes seconds msec
- OK
- Time taken: 299.204 seconds
# 数据加载完成
- hive> select count(host) from tab_orcfile_zlib;
- ...
- Stage-Stage-: Map: Reduce: Cumulative CPU: 43.66 sec HDFS Read: HDFS Write: SUCCESS
- Total MapReduce CPU Time Spent: seconds msec
- OK
- Time taken: 31.369 seconds, Fetched: row(s)
# 查询速度不受影响
- hive> dfs -ls -h /user/hive/warehouse/tmpdb.db/tab_orcfile_zlib/
- Found items
- -rwxrwxrwx root supergroup 24.6 M -- : /user/hive/warehouse/tmpdb.db/tab_orcfile_zlib/000000_0
- -rwxrwxrwx root supergroup 23.0 M -- : /user/hive/warehouse/tmpdb.db/tab_orcfile_zlib/000001_0
- -rwxrwxrwx root supergroup 25.9 M -- : /user/hive/warehouse/tmpdb.db/tab_orcfile_zlib/000002_0
- -rwxrwxrwx root supergroup 26.5 M -- : /user/hive/warehouse/tmpdb.db/tab_orcfile_zlib/000003_0
# 总共分成 39 个文件,每个平均 25M,总过不到 1G,原始文件 9.8G,这压缩比如何 ?
Apache Hive 存储方式、压缩格式的更多相关文章
- Hive 表数据的存储和压缩格式
SerDe * 按行存储 * 按列存储 file_format: : | SEQUENCEFILE 序列化(行存储) | TEXTFILE 文本格式(行存储)- (Default, depending ...
- Hadoop_常用存储与压缩格式
HDFS文件格式 file_format: TEXTFILE 默认格式 RCFILE hive 0.6.0 和以后的版本 ORC hive 0.11.0 和以后的版本 PARQUET hive 0.1 ...
- Hive支持的文件格式和压缩格式及各自特点
Hive中的文件格式 1-TEXTFILE 文本格式,Hive的默认格式,数据不压缩,磁盘开销大.数据解析开销大. 对应的hive API为:org.apache.hadoop.mapred.Text ...
- 一文彻底搞懂Hive的数据存储与压缩
目录 行存储与列存储 行存储的特点 列存储的特点 常见的数据格式 TextFile SequenceFile RCfile ORCfile 格式 数据访问 Parquet 测试 准备测试数据 存储空间 ...
- hive 压缩全解读(hive表存储格式以及外部表直接加载压缩格式数据);HADOOP存储数据压缩方案对比(LZO,gz,ORC)
数据做压缩和解压缩会增加CPU的开销,但可以最大程度的减少文件所需的磁盘空间和网络I/O的开销,所以最好对那些I/O密集型的作业使用数据压缩,cpu密集型,使用压缩反而会降低性能. 而hive中间结果 ...
- Hive压缩格式
TextFile Hive数据表的默认格式,存储方式:行存储. 可使用Gzip,Bzip2等压缩算法压缩,压缩后的文件不支持split 但在反序列化过程中,必须逐个字符判断是不是分隔符和行结束符,因此 ...
- Hive(十一)【压缩、存储】
目录 一.Hadoop的压缩配置 1.MR支持的压缩编码 2.压缩参数配置 3.开启Mapper输出阶段压缩 4.开启Reduceer输出阶段 二.文件存储 1.列式存储和行式存储 2.TextFil ...
- 浓缩的才是精华:浅析GIF格式图片的存储和压缩
成文迪, 在Web前端摸爬滚打的码农一枚,对技术充满热情的菜鸟,致力为手Q的建设添砖加瓦. GIF格式的历史 GIF(Graphics Interchange Format)原义是"图像互换 ...
- 【腾讯Bugly干货分享】舞动的表情包——浅析GIF格式图片的存储和压缩
本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/v0pffOhjFWnVbU2lXjuEmw 导语 G ...
随机推荐
- Angularjs+ThinkPHP3.2.3集成微信分享JS-SDK实践
先来看看微信分享效果: 在没有集成微信分享js-sdk前是这样的:没有摘要,缩略图任意抓取正文图片 在集成微信分享js-sdk后是这样的:标题,摘要,缩略图自定义 一.下载微信SDK开发包 下 ...
- SqlBulkCopy(批量复制)使用方法
SqlBulkCopy提供了一种将数据复制到Sql Server数据库表中高性能的方法.SqlBulkCopy 包含一个方法 WriteToServer,它用来从数据的源复制数据到数据的目的地. Wr ...
- Hadoop专业解决方案-第12章 为Hadoop应用构建企业级的安全解决方案
一.前言: 非常感谢Hadoop专业解决方案群:313702010,兄弟们的大力支持,在此说一声辛苦了,春节期间,项目进度有所延迟,不过元宵节以后大家已经步入正轨, 目前第12章 为Hadoop应用构 ...
- 【Active入门】ActiveMQ学习-1
基本概念: 接收者: package com.ll.activemq; import java.util.Collection; import java.util.Iterator; import j ...
- bzoj2565 最长双回文子串
Description 顺序和逆序读起来完全一样的串叫做回文串.比如acbca是回文串,而abc不是(abc的顺序为“abc”,逆序为“cba”,不相同).输入长度为n的串S,求S的最长双回文子串T, ...
- 纯文本文件 numbers.txt, 里面的内容(包括方括号)如下所示
from collections import OrderedDict import xlwt with open('student.txt','r') as f: number_list = jso ...
- Opencv 入门学习之图片人脸识别
读入图片,算法检测,画出矩形框 import cv2 from PIL import Image,ImageDraw import os def detectFaces(image_name): im ...
- git 场景 :从一个分支cherry-pick多个commit
场景: 在branch1开发,进行多个提交,这是切换到branch2,想把之前branch1分支提交的commit都[复制]过来,怎么办? 首先切换到branch1分支,然后查看提交历史记录,也可以用 ...
- C# webbrowser实现百度知道团队邀请助手!
[百度知道团队邀请助手] 是您快速提高百度知道团队成员数和团队排名的利器! 主要功能: 1.运用C#自带的webbrowser自动登录百度: 2.自动采集请在C#.Net分类排名下的所有用户,邀请这些 ...
- async await promise 执行时序
先用一个例子来说明async await promise的执行顺序 console.log('start'); async function test(){ console.log('111'); a ...