- 浏览: 288033 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
onlyamoment:
请问为什么要限制不合并文件呢?事实上,用动态分区写表时候容易出 ...
HIVE动态分区参数配置 -
alexss1988:
请问楼主,RCFILE由于列式存储方式,数据加载时性能消耗较大 ...
HIVE文件存储格式的测试比较 -
空谷悠悠:
jersey文档中提到:Client instances ar ...
自整理手册Jersey Client API -
bottle1:
我也遇到FileNotFoundException这个问题,发 ...
Hadoop 中使用DistributedCache遇到的问题 -
yongqi:
hi hugh.wangp: 请教您一个问题,我现在也在被 ...
Hadoop 中使用DistributedCache遇到的问题
1.如何使大数据量利用合适的map数2.如何使单个map处理合适的数据记录数
合并小文件是会消耗资源,何时合并小文件,哪些数据需要合并小文件一定要考虑全面点。1.设置HIVE的参数,使HIVE在数据生成时自动进行小文件合并,方法请参看:http://hugh-wangp.iteye.com/blog/15085062.设置HIVE的参数,使HIVE在获取数据是先进行小文件合并,set hive.input.format = org.apache.hadoop.hive.ql.io.CombineHiveInputFormat3.自己开发小文件合并工具,这个是自由度最高的方法
1.set mapred.reduce.tasks(预计一个文件包含的记录数,确定计划要输出的文件数)2.利用distribute by rand(123)把数据分散到各个reduce里
处理这种复杂程度的如下SQL,按现在的数据分布是够呛的,一个job半个小时都没有执行完
hive> select count(1) from shaka01;
OK
29022319
Time taken: 92.263 seconds
--HDFS的block.size
hive> set dfs.block.size;
dfs.block.size=268435456
--shaka01对应的文件,每个文件大于block.size,利用此表时会有4个map执行,平均1个map处理750W条记录
336495295 /group/hive/shaka01/attempt_201206121523_2432943_m_000000_0
338594924 /group/hive/shaka01/attempt_201206121523_2432943_m_000001_0
改变数据存储的文件数量,为了使1个map处理的记录数减少
--在第一个job(number of mappers: 4; number of reducers: 1)就执行将近30分钟,但是还处于map = 71%, reduce = 0%
hive> create table shaka02 as
> select '2012-06-26' col1
> ,a.col3
> ,a.col4
> ,a.col5
> ,count(distinct case when date_add(to_date(col2),7) > '2012-06-26' then a.col7 else null END) as col6
> ,count(distinct case when date_add(to_date(col2),30)> '2012-06-26' then a.col7 else null END ) as col7
> ,count(distinct case when date_add(to_date(col2),90)> '2012-06-26' then a.col7 else null END ) as col8
> ,count(distinct case when date_add(to_date(col2),7) >'2012-06-26' and date_add(to_date(col2),7)>to_date(a.col8) and to_date(a.col8)<='2012-06-26' then a.col7 else null END) col9
> ,count(distinct case when date_add(to_date(col2),30)>'2012-06-26' and date_add(to_date(col2),7)>to_date(a.col8) and to_date(a.col8)<='2012-06-26' then a.col7 else null END) col10
> ,count(distinct case when date_add(to_date(col2),90)>'2012-06-26' and date_add(to_date(col2),7)>to_date(a.col8) and to_date(a.col8)<='2012-06-26' then a.col7 else null END) col11
> from shaka01 a
> group by a.col3
> ,a.col4
> ,a.col5;
执行刚提到的复杂SQL
hive> set mapred.reduce.tasks = 10;
hive> set mapred.reduce.tasks;
mapred.reduce.tasks=10
--这样就能使shaka01的数据打散到10个文件中
hive> create table shaka01
> as
> select stat_date col1
> ,mc_sent_time col2
> ,receiver_admin_member_id col3
> ,receiver_company_id col4
> ,category_id col5
> ,sender_country_id col6
> ,sender_email col7
> ,first_reply_time col8
> ,dw_ins_date col9
> from test
> distribute by rand(123);
--每个文件都少于256MB,所以利用这张表的时候会起10个map
88469251 /group/hive/shaka01/attempt_201206121523_2440189_r_000000_0
89634660 /group/hive/shaka01/attempt_201206121523_2440189_r_000001_0
88117390 /group/hive/shaka01/attempt_201206121523_2440189_r_000002_0
87820171 /group/hive/shaka01/attempt_201206121523_2440189_r_000003_0
89219537 /group/hive/shaka01/attempt_201206121523_2440189_r_000004_0
90928398 /group/hive/shaka01/attempt_201206121523_2440189_r_000005_0
86772252 /group/hive/shaka01/attempt_201206121523_2440189_r_000006_0
87524942 /group/hive/shaka01/attempt_201206121523_2440189_r_000007_0
88125909 /group/hive/shaka01/attempt_201206121523_2440189_r_000008_0
86613799 /group/hive/shaka01/attempt_201206121523_2440189_r_000009_0
--第一个job多了6个map,达到10个map资源,26分钟就执行完毕整个SQL
hive> create table shaka02 as
> select '2012-06-26' col1
> ,a.col3
> ,a.col4
> ,a.col5
> ,count(distinct case when date_add(to_date(col2),7) > '2012-06-26' then a.col7 else null END) as col6
> ,count(distinct case when date_add(to_date(col2),30)> '2012-06-26' then a.col7 else null END ) as col7
> ,count(distinct case when date_add(to_date(col2),90)> '2012-06-26' then a.col7 else null END ) as col8
> ,count(distinct case when date_add(to_date(col2),7) >'2012-06-26' and date_add(to_date(col2),7)>to_date(a.col8) and to_date(a.col8)<='2012-06-26' then a.col7 else null END) col9
> ,count(distinct case when date_add(to_date(col2),30)>'2012-06-26' and date_add(to_date(col2),7)>to_date(a.col8) and to_date(a.col8)<='2012-06-26' then a.col7 else null END) col10
> ,count(distinct case when date_add(to_date(col2),90)>'2012-06-26' and date_add(to_date(col2),7)>to_date(a.col8) and to_date(a.col8)<='2012-06-26' then a.col7 else null END) col11
> from shaka01 a
> group by a.col3
> ,a.col4
> ,a.col5;
OK
Time taken: 1580.314 seconds
PS:
补充一种方法,工作中遇到的,而且已经作为我们的最终方案。
set dfs.block.size
不管是32MB,64MB,128MB或者256MB,只要保证一个block处理的记录数是自身环境所适应的就OK了。
发表评论
-
HBASE源码阅读(1)--启动脚本
2012-09-27 15:38 3964HBASE所有功能模块的启动都是通过start-hba ... -
【转】Hadoop 中的两表join
2012-08-09 10:35 1580原文见:http://www.gemini5201314 ... -
HIVE动态分区参数配置
2012-07-30 15:33 12533设置如下参数开启动态分区: hive.exec ... -
配置HIVE执行的本地模式
2012-07-21 09:20 4221自0.7版本后Hive开始支持任务执行选择本地模式(l ... -
HIVE如何使用自定义函数
2012-06-28 19:44 2664HIVE提供了很多函数 ... -
[陷阱]HIVE外部分区表一定要增加分区
2012-06-27 16:43 13062刚开始玩HIVE外部表可能会遇到的小陷阱。 只要 ... -
Hadoop查看目录空间使用情况
2012-06-26 18:42 14313查看目录空间使用情况 命令:hadoop fs ... -
HIVE元数据
2012-06-20 12:52 13294HIVE元数据表数据字典: 表名 ... -
LINUX下单机安装HADOOP+HIVE手册
2012-05-31 15:59 2161HADOOP篇 HADOOP安装 1.tar - ... -
推测执行的不适应场景
2012-05-25 16:13 2111在HADOOP里,如果一个任务运行比预期的慢,就会尽 ... -
小文件合并
2012-05-03 13:07 3111文件数目过多,增加namenode的压力,hdfs的 ... -
MapReduce的排序和二次排序
2012-04-20 10:38 17517自己学习排序和二次排序的知识整理如下。 1.Hadoo ... -
HIVE UDF/UDAF/UDTF的Map Reduce代码框架模板
2012-04-01 10:09 5827自己写代码时候的利用到的模板 UDF步骤: ... -
Hadoop 中使用DistributedCache遇到的问题
2012-03-29 15:59 14426自己在写MAR/REDUCE代码时,遇到了一个问题, ... -
基于HIVE文件格式的map reduce代码编写
2012-02-14 19:03 12739by hugh.wangp 我们的数 ... -
HIVE文件存储格式的测试比较
2012-02-13 17:26 3624by hugh.wangp 根据自身涉及到的数据分布和 ...
相关推荐
hive造数据
hive的表数据,可以到我的博客,有建表语句,我的链接是 https://blog.csdn.net/qq_43662627/article/details/121033176
Hive表生成工具,Hive表生成工具Hive表生成工具
支持hive 源数据、表结构导出
Hive表分区,里面有比较详细的Hive表分区方法,希望能够有所帮助。
《Hive数据仓库案例教程》教学课件 第5章 Hive数据操作.pdf《Hive数据仓库案例教程》教学课件 第5章 Hive数据操作.pdf《Hive数据仓库案例教程》教学课件 第5章 Hive数据操作.pdf《Hive数据仓库案例教程》教学课件 第...
datax数据从hive表导入mysql表,数据缺失解决
建立Hive和Hbase的映射关系,通过Spark将Hive表中数据导入ClickHouse对应的jar包
因为你不知道将Hive的数据导入到了ElasticSearch后,数据量是否准确,所以需要钉钉报警校验ElasticSearch和Hive数据仓库内的数据质量,注意,这个项目打包后,最好另起一个进程调用,并且开始时间为文章1或者2最大...
Hive.sql
hive表修改分区数据
hive练习数据和hive练习题包含了hive练习数据,hive数据的建表ddl和hive练习题,非常适合做hive练习,新手培训,快速入门等; 包含以下练习: hive的group by 和集合函数 hive的Order By/Sort By/Distribute By Join...
02_Hive表批量加载数据的脚本实现(一) 03_Hive表批量加载数据的脚本实现(二) 04_HIve中的case when、cast及unix_timestamp的使用 05_复杂日志分析-需求分析 06_复杂日志分析-需求字段讲解及过滤 07_复杂日志分析...
Hive的数据存储模式Hive的数据存储模式Hive的数据存储模式Hive的数据存储模式
(2)hive数据仓库分层设计,包含ODS、DWD、ADS层 (3)sqoop数据迁移,完成HIve与MySQL数据库中的数据交互 (4)Echarts搭建动态可视化大屏 (5)SpringBoot搭建可视化后台系统,完成前端与后台的数据传递与交互。 ...
项目实战:Java一站式解决Hive内用Spark取数,新建ES索引,灌入数据,并且采用ES别名机制,实现ES数据更新的无缝更新,底层采用Spark计算框架,数据较快。
Ambari搭建hadoop环境下,hive的数据导入
林子雨Hive数据集下载
可以从hive元数据生成建表语句的资源。包括表结构、分区等信息
1、通过亿级数据量在hive和impala中查询比较text、orc和parquet性能表现(一) 网址:https://blog.csdn.net/chenwewi520feng/article/details/130465139 本文通过在hdfs中三种不同数据格式文件存储相同数量的数据,...