Hive Spark Hadoop MapReduce
文章平均质量分 53
Top5硕士,先后在京东、字节从事多年后端开发、大数据开发。专栏包含Hive常用函数、Hive各种配置、、Spark配置与原理、Hadoop常用命令、MapReduce原理与定制开发、日常报错、大数据面试题目等,均为博主实际工作中遇到,精心总结。从企业实战出发,提高开发中解决问题的能力
二十六画生的博客
国内Top5硕士,先后在京东、字节从事多年后端开发、大数据开发。
展开
-
Spark spark.driver.maxResultSize作用,报错 is bigger than spark.driver.maxResultSize
Application PropertiesProperty Name Default Meaning spark.app.name (none) The name of your application. This will appear in the UI and in log data. spark.driver.cores 1 Number of cores to use for the driver process, only in cluster原创 2020-12-26 12:24:14 · 6392 阅读 · 0 评论 -
spark 什么是数据湖? 什么是deltalake?
What is a data lake?A data lake is a centralized data repository that is capable of storing both traditional structured (row and column) data, as well as unstructured, non-tabular raw data in its native format (like videos, images, binary files, and more转载 2021-02-28 19:21:39 · 1293 阅读 · 1 评论 -
Spark speculation推测执行 配置
spark官网配置解释spark.speculation false If set to "true", performs speculative execution of tasks. This means if one or more tasks are running slowly in a stage, they will be re-launched. spark.speculation.interval 100ms How often Spark will che原创 2020-12-26 12:33:44 · 614 阅读 · 0 评论 -
Spark 解决倾斜
1 提前过滤异常值2 增大shuffle并行度3 两阶段聚合(局部聚合+全局聚合)4 异常值 join ......on -rand()*100000 随机值5 broadcast joinhttps://programskills.blog.csdn.net/article/details/111667492大key 随机值扩容 重启时 随机值变化 ? 有问题?...原创 2021-02-22 21:52:20 · 189 阅读 · 0 评论 -
Spark算子:RDD行动Action操作–aggregate、fold、lookup;reduce/fold/aggregate区别
关键字:Spark算子、Spark函数、Spark RDD行动Action、aggregate、fold、lookupaggregatedef aggregate[U](zeroValue: U)(seqOp: (U, T) ⇒ U, combOp: (U, U) ⇒ U)(implicit arg0: ClassTag[U]): Uaggregate用户聚合RDD中的元素,先使用seqOp将RDD中每个分区中的T类型元素聚合成U类型,再使用combOp将之前每个分区聚合后的U类型聚合成U类型,转载 2020-12-25 20:33:35 · 387 阅读 · 0 评论 -
Spark算子:RDD键值转换操作–combineByKey、foldByKey
关键字:Spark算子、Spark RDD键值转换、combineByKey、foldByKeycombineByKeydef combineByKey[C](createCombiner: (V) => C, mergeValue: (C, V) => C, mergeCombiners: (C, C) => C): RDD[(K, C)]def combineByKey[C](createCombiner: (V) => C, mergeValue: (C, V) =转载 2020-12-25 18:07:34 · 219 阅读 · 0 评论 -
Spark性能优化指南——基础篇(开发调优、资源调优--设置参数)
前言在大数据计算领域,Spark已经成为了越来越流行、越来越受欢迎的计算平台之一。Spark的功能涵盖了大数据领域的离线批处理、SQL类处理、 流式/实时计算、机器学习、图计算等各种不同类型的计算操作,应用范围与前景非常广泛。在美团•大众点评,已经有很多同学在各种项目中尝试使用 Spark。大多数同学(包括笔者在内),最初开始尝试使用Spark的原因很简单,主要就是为了让大数据计算作业的执行速度更快、性能更高。然而,通过Spark开发出高性能的大数据计算作业,并不是那么简单的。如果没有对Spark作转载 2020-12-25 11:22:12 · 388 阅读 · 0 评论 -
Spark操作 aggregate、aggregateByKey 实例
1. aggregate函数 将每个分区里面的元素进行聚合,然后用combine函数将每个分区的结果和初始值(zeroValue)进行combine操作。这个函数最终返回的类型不需要和RDD中元素类型一致。seqOp操作会聚合各分区中的元素,然后combOp操作把所有分区的聚合结果再次聚合,两个操作的初始值都是zeroValue. seqOp的操作是遍历分区中的所有元素(T),第一个T跟zeroValue做操作,结果再作为与第二个T做操作的zeroValue,直到遍历完整个分区。comb...原创 2020-12-21 17:16:15 · 767 阅读 · 0 评论 -
Spark distinct去重原理 (distinct会导致shuffle)
distinct算子原理:含有reduceByKey则会有shuffle贴上spark源码: /** * Return a new RDD containing the distinct elements in this RDD. */ def distinct(numPartitions: Int)(implicit ord: Ordering[T] = null): RDD[T] = withScope { map(x => (x, null)).redu.转载 2021-01-16 16:49:14 · 2691 阅读 · 0 评论 -
Spark 推测执行 /spark.speculation=true /spark.speculation.quantile=0.75/spark.speculation.multiplier=1.5
在Spark中任务会以DAG图的方式并行执行,每个节点都会并行的运行在不同的executor中,但是有的任务可能执行很快,有的任务执行很慢,比如网络抖动、性能不同、数据倾斜等等。有的Task很慢就会成为整个任务的瓶颈,此时可以触发 推测执行 (speculative) 功能,为长时间的task重新启动一个task,哪个先完成就使用哪个的结果,并Kill掉另一个task。重点配置:# 开启speculative,默认关闭spark.speculation=true # 检测周期,单位毫秒sp转载 2021-01-24 19:32:50 · 1162 阅读 · 0 评论 -
Spark Cache 和 Checkpoint 区别
cache checkpoint rdd.persist(StorageLevel.DISK_ONLY) 使用场景 会被重复使用的(但不能太大) 运算时间很长或运算量太大才能得到的 RDD,computing chain 过长或依赖其他 RDD 很多的 RDD 存储位置 内存 磁盘或HDFS 磁盘或HDFS 是否保存血缘关系 保存血缘关系(内存不可靠,cache丢失时可以重新计算) 不保存血缘关系(HDFS可靠保存) ...转载 2021-02-22 16:30:39 · 525 阅读 · 0 评论 -
Spark算子:RDD键值转换操作–groupByKey、reduceByKey、reduceByKeyLocally;groupByKey优化
关键字:Spark算子、Spark RDD键值转换、groupByKey、reduceByKey、reduceByKeyLocallygroupByKeydef groupByKey(): RDD[(K, Iterable[V])] //返回新RDD,value值类型是Iterabledef groupByKey(numPartitions: Int): RDD[(K, Iterable[V])]def groupByKey(partitioner: Partitioner): RDD[(K转载 2020-12-25 12:11:43 · 383 阅读 · 0 评论 -
Spark Adaptive Execution 让 Spark SQL 更高效更智能/倾斜/join优化
RBO 与 CBO 在逻辑计划优化阶段与物理计划生成阶段通过规则优化最终生成的 DAG。本文介绍的 Adaptive Execution 可在 Spark Job 执行过程中,自动基于中间结果的统计信息优化后续的执行计划从而提高整体执行效率,并降低使用门槛本文所述内容均基于 2018年9月17日 Spark 最新 Spark Release 2.3.1 版本,以及截止到 2018年10月21日 Adaptive Execution 最新开发代码。自动设置 Shuffle Partition 个数已进入转载 2021-01-24 19:21:16 · 350 阅读 · 0 评论 -
Spark:常用transformation 转换操作 及action 行动操作
一、常用transformation介绍操作 介绍 map 将RDD中的每个元素传入自定义函数,获取一个新的元素,然后用新的元素组成新的RDD filter 对RDD中每个元素进行判断,如果返回true则保留,返回false则剔除 flatMap 与map类似,但是对每个元素都可以返回一个或多个新元素 groupByKey 根据key进行分组,每个key对应一个Iterable<value> reduceByKey 对每个Key对应的v原创 2021-01-27 09:41:07 · 493 阅读 · 0 评论 -
Spark中会导致shuffle的算子
1、repartition类的操作:比如repartition、repartitionAndSortWithinPartitions、coalesce等2、byKey类的操作:比如reduceByKey、groupByKey、sortByKey、countByKey、combineByKey、aggregateByKey、foldByKey等3、join类的操作:比如join、cogroup等重分区: 一般会shuffle,因为需要在整个集群中,对之前所有的分区的数据进行随机,均匀的打乱,然后把数据转载 2020-12-25 18:14:38 · 2328 阅读 · 0 评论 -
Spark算子:RDD基本转换transform操作–union、intersection、subtract
Welcome to ____ __ / __/__ ___ _____/ /__ _\ \/ _ \/ _ `/ __/ '_/ /___/ .__/\_,_/_/ /_/\_\ version 2.4.5.online-JD2.4.5.16-202012212053 /_/Using Scala version 2.11.12 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8..原创 2021-01-05 18:28:00 · 413 阅读 · 0 评论 -
Spark的 job stage task 的关系和划分
比如如下DAG:tansform11->tansform12(shuffle)->action1->tansform21->tansform22(shuffle)-> tansform23->tansform24(shuffle) ->action2如上,会启用2个job,第1个job执行【tansform11->tansform12(shuffle)->action1】,含有1个stage;第2个job执行【tansform21->t原创 2021-03-07 18:31:25 · 572 阅读 · 0 评论 -
spark分区数,task数目,core数,worker节点个数,excutor数量梳理
输入可能以多个文件的形式存储在HDFS上,每个File都包含了很多块,称为Block。当Spark读取这些文件作为输入时,会根据具体数据格式对应的InputFormat进行解析,一般是将若干个Block合并成一个输入分片,称为InputSplit,注意InputSplit不能跨越文件。随后将为这些输入分片生成具体的Task。InputSplit与Task是一一对应的关系。随后这些具体的Task每个都会被分配到集群上的某个节点的某个Executor去执行。每个节点可以起一个或多个Executor。转载 2020-12-21 19:41:11 · 1358 阅读 · 1 评论 -
spark推测执行 优点 缺点
基本概念 在spark程序中,推测任务是指对于一个stage里面拖后腿的task,会在其他节点的Executor上再次启动这个task,如果其中一个task的实例运行成功者将这个最先完成的task的计算结果,同时会干掉其它Executor上运行的实例。默认情况下推测执行时关闭的。开启推测的优点:解决慢task提升作业的整体执行进度 解决分布式集群环境下,负载不均衡或者资源分布不均等问题 解决因机器或者程序bug导致执行task的进程hang(暂时停止执行)住,使得job无法...原创 2021-11-02 21:31:34 · 696 阅读 · 0 评论 -
Spark 内存管理 spark.executor.memory /spark.memory.fraction/spark.memory.offHeap.size【堆外内存/内存管理】 钨丝计划
spark.executor.memory 包含spark.memory.fraction;spark.memory.fraction 包含 spark.memory.storageFraction;spark 2.4.5Application PropertiesProperty Name Default Meaning spark.app.name (none) The name of your application. This will appear in.转载 2020-12-26 13:51:58 · 5282 阅读 · 0 评论 -
Spark性能优化指南——高级篇(解决倾斜、Shuffle调优)-shuffle几种方式
前言本文作为《Spark性能优化指南》的高级篇,将深入分析数据倾斜调优与shuffle调优,以解决更加棘手的性能问题。数据倾斜调优调优概述有的时候,我们可能会遇到大数据计算中一个最棘手的问题——数据倾斜,此时Spark作业的性能会比期望差很多。数据倾斜调优,就是使用各种技术方案解决不同类型的数据倾斜问题,以保证Spark作业的性能。数据倾斜发生时的现象绝大多数task执行得都非常快,但个别task执行极慢。比如,总共有1000个task,997个task都在1分钟之内执行完了,但是剩转载 2020-12-25 11:55:42 · 771 阅读 · 0 评论 -
纪念自己的第一个MapReduce例子-WordCount
如下:import java.io.File;import java.io.IOException;import java.util.StringTokenizer;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.Int...原创 2019-03-07 10:06:21 · 341 阅读 · 0 评论 -
Spark为何比MapReduce更快?Spark基于内存计算什么意思?
1 spark的task是线程,启动更快;mr的task是进程2 spark的很多操作是在内存进行,只有shuffle操作才会把数据落盘;mr的很多操作,包括shuffle,会把数据落盘3 spark的shuffle阶段对中间结果文件建立有索引文件,读取更快;mr对中间文件没有建立索引文件;4spark的shuffle阶段启用bypass时不会对中间结果文件进行排序;mr的shuffle阶段包含3次排序;5 spark可以对反复用到的数据进行缓存,避免多次加载花费时间;mr不能把多次用到..原创 2021-03-07 18:23:18 · 2098 阅读 · 0 评论 -
Mapreduce中Shuffle 与 Spark中Shuffle 的区别 ?
Spark 1.2以后默认用SortShuffleManager不同点: MapreduceShuffle SparkShuffle map端大文件的索引文件 没有 有 map端输出的文件是否有序 有序 如果启用byPass机制则不会排序(),反之会排序 中间文件是否落盘 相同点:1 都是先写到内存,达到阈值时溢出多个小文件2 有多少个map会产生多少个大文件;上游stage...原创 2021-03-07 16:41:32 · 752 阅读 · 0 评论 -
mapreducce 任务过程 发生几次排序?/数据几次落盘?/数据几次merge?/数据几次读入内存?
发生几次排序?即发生3次排序:1 map spill到磁盘的小文件是有序的(达到阈值时,先对环形缓冲区的数据排序,然后spill到磁盘)2map spill到磁盘的多个小文件会合并成一个有序的大文件3 reduce copy后,把溢出的多个小文件合并成一个有序的大文件1快速排序,2/3是归并排序。数据几次落盘?1map spill到磁盘的小文件2reduce copy后,达到一定阈值时,会溢出多个小文件到磁盘数据几次merge?1 map端把溢出的多个...原创 2021-03-07 16:19:51 · 1255 阅读 · 0 评论 -
MapReduce出参要一致,context.write
12end原创 2019-03-07 21:07:42 · 1910 阅读 · 0 评论 -
MapReduce, Iterable转化为list
如下: public void reduce(Text key, Iterable<Text> values, Context context) { try { //转化为list //之前存的value会被最新的value覆盖,导致list的所有元素都相同,都是最后一个存进去的...原创 2019-03-21 11:05:20 · 1382 阅读 · 0 评论 -
Hadoop Streaming 和Hadoop Pipes的区别
Hadoop Streaming是Hadoop为方便非Java用户编写MapReduce程序而设计的工具包,它允许用户将任何可执行文件或脚本作为Mappper/Reducer,可以大大提高程序员的开发效率。要求用户编写的Mapper/Reducer从标准输入中读取数据,并将结果写入到标准数据中,类似于Linux中的管道数据。Hadoop Pipes是Hadoop为方便C/C++用户编写MapR...转载 2019-11-16 18:43:40 · 336 阅读 · 0 评论 -
Haoop Map任务数和Reduce 任务数如何确定(二)
基于org.apache.hadoop.mapreduce包新版API一、Map1、Map个数的确定map的个数等于split的个数。我们知道,mapreduce在处理大文件的时候,会根据一定的规则,把大文件划分成多个,这样能够提高map的并行度。划分出来的就是InputSplit,每个map处理一个InputSplit.因此,有多少个InputSplit,就有多少个map数。2、谁负责划分split主要是InputFormat。InputFormat类有2个重要的作用:1)将输入的数据切分为转载 2020-12-27 11:22:28 · 753 阅读 · 0 评论 -
Hadoop分片原理 split,getSplit,map任务数
/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to .原创 2020-06-02 22:59:50 · 765 阅读 · 0 评论 -
HDFS块大小为何是128MB ? block.size
块大小取决于dfs.blocksize,2.x默认为128M,1.x默认为64M(128M指的是块的最大大小!每个块最多存储128M的数据,如果当前块存储的数据不满128M,存了多少数据,就占用多少的磁盘空间!一个块只属于一个文件!) 默认为128M的原因,基于最佳传输损耗理论! 不论对磁盘的文件进行读还是写,都需要先进行寻址! 最佳传输损耗理论:在一次传输中,寻址时间占用总传输时间的1%时,本次传输的损耗最小,为最佳性价比传输! 目前硬件的发展条件,普通磁盘写的速率大概为100M/原创 2021-01-27 14:21:10 · 1636 阅读 · 0 评论 -
Unsupported major.minor version 52.0解决办法
0617:30:07INFOExceptioninthread"main"java.lang.UnsupportedClassVersionError:org/apache/hadoop/fs/FsShell:Unsupportedmajor.minorversion52.02019-12-0617:30:07INFOatjava.lang.ClassLoad...原创 2019-12-09 14:17:10 · 1467 阅读 · 0 评论 -
Hadoop之分块、分片与shuffle机制详解;设置map任务数目
一 分块(Block) HDFS存储系统中,引入了文件系统的分块概念(block),块是存储的最小单位,HDFS定义其大小为64MB。与单磁盘文件系统相似,存储在 HDFS上的文件均存储为多个块,不同的是,如果某文件大小没有到达64MB,该文件也不会占据整个块空间。在分布式的HDFS集群上,Hadoop系统保证一个块存储在一个datanode上。 把File划分成Block,这个是物理上真真实实的进行了划分,数据文件上传到HDFS里的时候,需要划分成一块一块,每块的大小由h...转载 2020-12-26 19:08:51 · 931 阅读 · 1 评论 -
Hive date/timestamp/date_sub/date_add/date_format/日期时间格式转换
务必注意输入类型和返回类型!Hive函数-官方文档。原创 2022-07-16 17:52:57 · 3546 阅读 · 1 评论 -
Hive sum over partition preceding following 累计求和
有重复,不符合预期 按月份累计时partition by不能再出现month字段!符合预期符合预期 把month加上后,是精确到month粒度了,就看不出累加的效果了:partition by与group by的不同点:1 over(partition by)时select中可以出现多个字段(比如相关的维度字段或不相关的其他字段);但是如果是写[group by 维度字段]时,前面select中需要出现相同的维度字段才行(不然报错),比partition by多了一个限制!2 par原创 2022-07-14 16:15:53 · 2932 阅读 · 0 评论 -
flinksql的 / 的结果只会保留整数部分,flinksql 不支持 div运算符。hive、 mysql : / 结果是小数, div 结果只会保留整数部分
flinksql的 / 的结果只会保留整数部分,flinksql 不支持 div运算符。hive、 mysql : / 结果是小数, div 结果只会保留整数部分mysql> select 3/2 ;+--------+| 3/2 |+--------+| 1.5000 |+--------+1 row in set (0.00 sec)mysql> mysql> mysql> select 3 div 2 ;+---------+| 3 ..原创 2022-03-29 10:16:53 · 3371 阅读 · 0 评论 -
SQL 10位时间戳 除以60 得到整分钟;group by event_ts/60<==> group by 1min
1648519200 2022-03-29 10:00:00/60 = 274753201648519260 2022-03-29 10:01:00/60= 274753211648519300 2022-03-29 10:01:40/60= 27475321.6666666666666671648519320 2022-03-29 10:02:00/60= 274753221648519360 2022-03-29 10:02:40/60= 27475322.6666666666原创 2022-03-29 10:10:12 · 806 阅读 · 0 评论 -
Hive GROUPING SETS和GROUPING__ID\CUBE\ROLLUP
GROUPING SETS和GROUPING__ID说明在一个GROUP BY查询中,根据不同的维度组合进行聚合,等价于将不同维度的GROUP BY结果集进行UNION ALLGROUPING__ID,表示结果属于哪一个分组集合。查询语句: 1 2 3 4 5 6 7 8 9 select month, day, count(distinctcookieid)...原创 2022-02-25 18:32:16 · 248 阅读 · 0 评论 -
row_number where 为何会报错?mysql / hive中均报错
为何会报错?1 如果是row_number之后再在where中直接取排名,为何会报错?比如: 1 2 3 4 5 6 7 select tag, uid, row_number()over(partitionbytagorderbytag,max_scoredesc,min_scoredesc,uiddesc)asrank_num--不能写r...原创 2021-11-17 21:28:43 · 7869 阅读 · 3 评论 -
Hive 日期取时间 比较大小
select substring('2021-10-27 01:27:15',12,length('2021-10-27 01:27:15')) ; -- 01:27:15select substring('2021-10-27 01:27:15',12,length('2021-10-27 01:27:15')) < '23:59:59' -- trueselect substring('2021-10-27 01:27:15',12,length('2021-10-27 01:...原创 2021-10-28 11:52:37 · 6204 阅读 · 0 评论