概述
前些时间,运维的同事反应小文件过多问题,需要我们去处理,所以想到是以何种手段去合并现有的小文件。我们知道Hadoop需要在namenode维护文件索引相关的metadata,所以小文件过多意味着消耗更大的内存空间。 经过网上的调研发现通过hive表使用orc格式进行存储能够通过 本文不再详细介绍orc,text,rc,parquet各种对比,具体可见网上相关文章,下面只是以举例为主。 创建一个orc hive 表: 从别的表导数据到此表的20180505分区: 不足点:背景
过程
concatenate
命令对分区进行小文件合并,并且能够节省80%以上的存储空间,真是喜闻乐见!CREATE EXTERNAL TABLE `app.example_orc`(
`timestamp` string COMMENT '时间戳',
`city` string)
PARTITIONED BY (
`dt` string)
STORED AS ORC
LOCATION
'hdfs://xxxxxxxx/test'
TBLPROPERTIES (
'mart_name'='xxxx',
'transient_lastDdlTime'='1476148520');
INSERT INTO TABLE app.example_orc partition(dt="20180505",dt="xxxxx"...) select timestamp, city from app.nielsenid_device2pin_unmapped where dt="20180505"
使用concatenate命令针对20180505分区进行小文件合并:alter table app.example_orc partition (dt="20180505") concatenate;
mapreduce.input.fileinputformat.split.minsize=256mb
的设置有关,可设定每个文件的最小size;
最后
以上就是妩媚耳机为你收集整理的解决hive表小文件过多问题的全部内容,希望文章能够帮你解决解决hive表小文件过多问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复