Hive ORC + SNAPPY
Hive orc 格式 + snappy 压缩是比较常用的存储加压缩格式。
今天处理下面的场景时,解决了一些问题,记录下来:
flume消费kafka的数据实时写入hdfs,通过创建分区表,t + 1 时,需要看到昨天的数据:
flume 通过snappy 将数据写入hdfs,可以通过在fliume.conf中配置以下
- 保证每天的数据写入同一个目录中:
agent.sinks.hdfs_sink.hdfs.path = /user/hive/warehouse/ods.db/kafka_2_hdfs_test/ods_sale_alter/dt=%Y-%m-%d
- 避免在hdfs写入过多的小文件:
tier1.sinks.hdfs_sink.hdfs.idleTimeout=
这个参数是某个topic停止活动时间超过设置的值时,就把hdfs上文件结尾的.tmp去掉,并开始写入新文件。设置为0,表示忽略停止时间。
- 配置了2的参数后,会造成一个问题,当新的一天,数据开始写入hdfs上另一个目录后,
比如"dt=2019-03-02","dt=2019-03-01"文件夹下的最后一个文件,还是以.tmp结尾的,在hive建表后,数据格式错误会报错。
所以需要我们通过脚本,每天修复文件名称:hadoop -mv abc.tmp abc
- 另外就是hive建表的问题:
当数据导入hdfs后,我们想针对flume倒过来的数据,建立snappy压缩,orc格式的hive表。
建表语句如下:DROP TABLE IF EXISTS test_orc_snappy;
CREATE EXTERNAL TABLE test_orc_snappy (
x_json string
)
PARTITIONED BY (`dt` string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY "\t"
STORED AS orc
LOCATION '/user/hive/warehouse/ods.db/kafka_2_hdfs_test/test_orc_snappy'
TBLPROPERTIES ("orc.compress"="SNAPPY");然而,我忽略了一件很重要的事,文件虽然用了snappy压缩,但是没有转化为orc格式。
假如我们还想继续使用orc格式,那就只能把这张表当做底层表,在上层表比如 dw 层,中通过insert into的方式,
转为orc格式的表。 - 那么这里可以使用的建表语句是什么呢?
CREATE EXTERNAL TABLE test_snappy (
x_json string
)
PARTITIONED BY (`dt` string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY "\t"
STORED AS textfile
LOCATION '/user/hive/warehouse/ods.db/kafka_2_hdfs_test/ods_sale_alter'
TBLPROPERTIES ("orc.compress"="SNAPPY")使用textFile就可以了。
Hive ORC + SNAPPY的更多相关文章
- 大数据:Hive - ORC 文件存储格式
一.ORC File文件结构 ORC的全称是(Optimized Row Columnar),ORC文件格式是一种Hadoop生态圈中的列式存储格式,它的产生早在2013年初,最初产生自Apache ...
- Hive - ORC 文件存储格式【转】
一.ORC File文件结构 ORC的全称是(Optimized Row Columnar),ORC文件格式是一种Hadoop生态圈中的列式存储格式,它的产生早在2013年初,最初产生自Apache ...
- Sqoop-将MySQL数据导入到hive orc表
sqoop创建并导入数据到hive orc表 sqoop import \ --connect jdbc:mysql://localhost:3306/spider \ --username root ...
- Hive:ORC File Format存储格式详解
一.定义 ORC File,它的全名是Optimized Row Columnar (ORC) file,其实就是对RCFile做了一些优化. 据官方文档介绍,这种文件格式可以提供一种高效的方法来存储 ...
- hive orc压缩数据异常java.lang.ClassCastException: org.apache.hadoop.io.Text cannot be cast to org.apache.hadoop.hive.ql.io.orc.OrcSerde$OrcSerdeRow
hive表在创建时候指定存储格式 STORED AS ORC tblproperties ('orc.compress'='SNAPPY'); 当insert数据到表时抛出异常 Caused by: ...
- hive orc update
hive-site.xml --><configuration> <!-- WARNING!!! This file is auto generated for documen ...
- Hive ORC表的使用
创建普通临时表: create table if not exists test_orc_tmp( name string, gender string, cnt BIGINT )row ...
- Hive存储格式之ORC File详解,什么是ORC File
目录 概述 文件存储结构 Stripe Index Data Row Data Stripe Footer 两个补充名词 Row Group Stream File Footer 条纹信息 列统计 元 ...
- Hive Streaming 追加 ORC 文件
1.概述 在存储业务数据的时候,随着业务的增长,Hive 表存储在 HDFS 的上的数据会随时间的增加而增加,而以 Text 文本格式存储在 HDFS 上,所消耗的容量资源巨大.那么,我们需要有一种方 ...
随机推荐
- 常用MFC宏
最近我在用MFC开发一个智能家居监控平台的软件(用到了MSCOMM串口通信控件),当我通过在一个对话框类A中定义另一个对话框类B的对象访问B的public成员时,提示不可访问.后来经过多天的向朋友求救 ...
- 终于搞定Fastreport2.x PDF输出,相信其他版本也差不多
这个版本有powerpdf可以支持,但有bug, 经过反复摸索,终于搞定. 基本可用. 主要是中英文混合在一起,如果按中文输出,会有英文宽度也是中文的宽度了,格式变化,不可 接受. 而按英文输出,又是 ...
- tp5查看版本
5.0 base.php 5.1 echo \think\facade\App::version();//用这行代码查看版本
- How to Set Ckeditor ReadOnly Mode
CKEditor API makes it possible to render the editor content read-only (and thus impossible for the u ...
- datagrid 扩展 页脚 合计功能
效果图:合计信息展示在页脚中(showFooter:true) code: <!DOCTYPE html> <html> <head> <meta chars ...
- 【51NOD】1006 最长公共子序列Lcs(动态规划)
给出两个字符串A B,求A与B的最长公共子序列(子序列不要求是连续的). 比如两个串为: abcicba abdkscab ab是两个串的子序列,abc也是,abca也是,其中abca是这两个 ...
- 【Web】Sublime Text 3 连接sftp/ftp(远程服务器)
在 Win 下常用 Xftp 软件来和远程服务传递文件,但是要是在项目开发的时候频繁的将远程文件拖到本地编辑然后再传回远程服务器,那真是麻烦无比,但是Sublime中SFTP插件,它让这世界美好了许多 ...
- bootstrap css布局
1.移动先行 <meta name="viewport" content="width=device-width, initial-scale=1, maximum ...
- web前端面试题库
web前端面试题及答案 1.常用那几种浏览器测试?有哪些内核(Layout Engine)? 答: (Q1) 浏览器:IE,Chrome,FireFox,Safari,Opera. (Q2) ...
- day10作业—(闭包迭代器递归)
补充:一个星号的 打散和聚合 a, b , *c = [1,2, 1,4] print( a , b , *c) #1 2 1 4 print(a, b, c) #1 2 [1, 4] *c , = ...