- 浏览: 292683 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
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 4036HBASE所有功能模块的启动都是通过start-hba ... -
【转】Hadoop 中的两表join
2012-08-09 10:35 1680原文见:http://www.gemini5201314 ... -
HIVE动态分区参数配置
2012-07-30 15:33 12700设置如下参数开启动态分区: hive.exec ... -
配置HIVE执行的本地模式
2012-07-21 09:20 4379自0.7版本后Hive开始支持任务执行选择本地模式(l ... -
HIVE如何使用自定义函数
2012-06-28 19:44 2719HIVE提供了很多函数 ... -
[陷阱]HIVE外部分区表一定要增加分区
2012-06-27 16:43 13175刚开始玩HIVE外部表可能会遇到的小陷阱。 只要 ... -
Hadoop查看目录空间使用情况
2012-06-26 18:42 14409查看目录空间使用情况 命令:hadoop fs ... -
HIVE元数据
2012-06-20 12:52 13383HIVE元数据表数据字典: 表名 ... -
LINUX下单机安装HADOOP+HIVE手册
2012-05-31 15:59 2206HADOOP篇 HADOOP安装 1.tar - ... -
推测执行的不适应场景
2012-05-25 16:13 2152在HADOOP里,如果一个任务运行比预期的慢,就会尽 ... -
小文件合并
2012-05-03 13:07 3198文件数目过多,增加namenode的压力,hdfs的 ... -
MapReduce的排序和二次排序
2012-04-20 10:38 17705自己学习排序和二次排序的知识整理如下。 1.Hadoo ... -
HIVE UDF/UDAF/UDTF的Map Reduce代码框架模板
2012-04-01 10:09 5939自己写代码时候的利用到的模板 UDF步骤: ... -
Hadoop 中使用DistributedCache遇到的问题
2012-03-29 15:59 14566自己在写MAR/REDUCE代码时,遇到了一个问题, ... -
基于HIVE文件格式的map reduce代码编写
2012-02-14 19:03 12892by hugh.wangp 我们的数 ... -
HIVE文件存储格式的测试比较
2012-02-13 17:26 3723by hugh.wangp 根据自身涉及到的数据分布和 ...
相关推荐
Spark与Hive的集成允许我们直接操作Hive表,将Hive数据转换为Spark DataFrame,这样就可以利用Spark的并行计算能力进行数据预处理和转换。 3. **数据转换**: 在从Hive加载数据到Spark后,可能需要对数据进行清洗...
hive的表数据,可以到我的博客,有建表语句,我的链接是 https://blog.csdn.net/qq_43662627/article/details/121033176
Hive表生成工具,Hive表生成工具Hive表生成工具
在Hive和ClickHouse之间传输数据时,Spark可以作为一个中间层,利用其强大的数据处理能力,将Hive表的数据转换为适合ClickHouse存储的格式。 导入ClickHouse的过程大致分为以下几步: 1. **配置Spark连接Hive**:...
支持hive 源数据、表结构导出
让我们深入探讨一下这两个部分以及与Hive、大数据、Hadoop和数据仓库相关的知识点。 首先,`video`数据可能包含了关于视频的各种信息,如视频ID、视频标题、时长、分类、上传日期、播放次数、评论数量等。这些数据...
Hive表分区,里面有比较详细的Hive表分区方法,希望能够有所帮助。
其中一种常见的问题是,在使用Spark或MR引擎对Hive表进行数据插入后,通过Hive查询这些数据时,结果却显示为0条记录。具体表现为用户反馈在使用Tez引擎查询时可以得到正确结果,但在使用Spark-SQL查询同一张表时却...
Hive 是基于 Hadoop 的数据仓库工具,能够对大量数据进行存储和管理。通过 Hive,可以对大规模数据进行快速的查询和分析。本案例中,我们使用 Hive 对 MM 聊天软件的数据进行分析,了解用户行为和偏好。 知识点二...
- 修改Hive表分区名称的过程中,需要谨慎操作,尤其是当涉及到大量数据迁移时,应确保数据的完整性和一致性。 - 在修改完分区名称后,建议再次使用`SHOW PARTITIONS test;`命令来检查所有分区的信息,确保所有操作均...
《Hive数据仓库案例教程》教学课件 第5章 Hive数据操作.pdf《Hive数据仓库案例教程》教学课件 第5章 Hive数据操作.pdf《Hive数据仓库案例教程》教学课件 第5章 Hive数据操作.pdf《Hive数据仓库案例教程》教学课件 第...
本资源“hive元数据生成建表语句”主要关注如何从已有的Hive元数据中自动生成创建表的SQL语句,以便于理解和重现现有数据表的结构。 首先,理解Hive元数据: 1. **数据库**:Hive支持多数据库的概念,每个数据库...
Hive 是一种广泛应用于大数据处理领域的工具,它为用户提供了类 SQL 的查询语言 HiveQL,使用户能够更加便捷地进行数据提取、转换与加载(ETL)。本文主要针对 Ambari 搭建的 Hadoop 环境下,Hive 的几种数据导入...
### Kettle 从 Oracle 数据库导数据到 Hive 表 #### 背景与目的 在企业级数据处理场景中,随着大数据技术的发展,越来越多的企业选择将原有的关系型数据库(如 Oracle)中的数据迁移到基于 Hadoop 生态系统的数据...
4. **Hive数据定义**:讲解如何创建、查询、修改和删除数据库及表,包括分区表和桶表的创建。学生将学会如何设计适合大数据处理的表结构。 5. **Hive数据操作**:这部分涵盖数据的插入、更新和删除操作,以及数据...
在大数据处理领域,Hive 和 MySQL 分别作为数据仓库与关系型数据库的重要组成部分,在数据流转过程中承担着关键角色。Hive 通常用于存储海量数据并进行批处理分析,而 MySQL 则用于存储结构化数据并提供快速查询服务...
使用这样的工具,开发人员和数据工程师可以更加高效、安全地管理他们的Hive数据仓库,减少手动操作带来的错误和时间消耗。同时,通过优化删除策略,还可以帮助组织节省存储空间,保持数据仓库的整洁和有序。 在实际...
这暗示了数据量相当大,适合用来测试Hive在处理大规模数据时的性能、稳定性和效率。同时,800万条记录可能包括了用户的多种操作,如浏览、点击、购买、搜索等,这样的多样性使得测试场景更为真实,能够全面检验Hive...
### Hive数据存储模式详解 #### 一、Hive的数据存储 Hive作为一款基于Hadoop的数据仓库工具,其核心功能之一就是提供了一种高效的管理大数据的方式。Hive的数据分为两大类:**表数据**和**元数据**。 - **表数据*...