- 博客(108)
- 收藏
- 关注
spark transform系列__groupByKey
这个操作的作用根据相同的key的所有的value存储到一个集合中的一个玩意.def groupByKey(): RDD[(K, Iterable[V])] = self.withScope { groupByKey(defaultPartitioner(self))}在 做groupByKey的操作时,由于需要根据key对数据进行重新的分区操作,因此这个操作需要有一个partition...
2016-01-29 09:15:58
151
原创 spark transform系列__Coalesce
Coalesce/repartitioncoalesce这个操作是把当前的RDD中的partition根据一个新的传入的parition的个数,对partition中的结果集进行重新组合成一个新的结果集的函数.这个函数需要传入两个参数:参数1:需要重新进行分区的分区个数.参数2:是否执行shuffle操作,默认为false.def coalesce(numPartition
2016-01-28 18:17:34
1005
原创 spark transform系列__Cartesian
Cartesian这个操作返回两个RDD的笛卡尔集.如果两个RDD中某一个RDD的结果集为空集时,这个结果集也是一个空集.这个操作不会执行shuffle的操作.def cartesian[U: ClassTag](other: RDD[U]): RDD[(T, U)] = withScope { new CartesianRDD(sc, this, other)}从上面的
2016-01-28 18:15:50
1716
1
原创 spark transform系列__join
JoinJoin包含有join,fullOuterJoin,leftOuterJoin,rightOuterJoin四种实现,下面先根据join的实现流程进行分析,再对join分析的结果的基础上,最后根据后面三种join的实现,说明下这几种JOIN的差别所在.Join的函数中,需要一个Partitioner的实例,默认是HashPartitioner,join的实现中,是直接通过调用
2016-01-28 18:11:52
1931
原创 spark transform系列__cogroup
Cogroupcogroup的函数实现:这个实现根据两个要进行合并的两个RDD操作,生成一个CoGroupedRDD的实例,这个RDD的返回结果是把相同的key中两个RDD分别进行合并操作,最后返回的RDD的value是一个Pair的实例,这个实例包含两个Iterable的值,第一个值表示的是RDD1中相同KEY的值,第二个值表示的是RDD2中相同key的值.由于做cogroup的操作
2016-01-28 18:08:49
1976
原创 spark transform系列__aggregateByKey
aggregateByKey这个函数可用于完成对groupByKey,reduceByKey的相同的功能,用于对rdd中相同的key的值的聚合操作,主要用于返回一个指定的类型U的RDD的transform,在这个函数中,需要传入三个参数:参数1:用于在每个分区中,对key值第一次读取V类型的值时,使用的U类型的初始变量,参数2:用于在每个分区中,相同的key中V类型的值合并到参数1创建
2016-01-28 18:07:29
3202
原创 spark transform系列__distinct
Distinct的操作其实是把原RDD进行MAP操作,根据原来的KEY-VALUE生成为KEY,value使用null来替换,并对新生成的RDD执行reduceByKey的操作,这个reduceByKey的操作中,传入的x,y都是null,这个地方执行reduceByKey的函数(下面的红色部分,直接返回传入的第一个值),执行完成reducebykey的操作后,这个时候新的RDD就只相同的ke
2016-01-28 18:05:07
7544
原创 spark transform系列__union
UnionUnion的transform主要是把两个RDD合并成一个RDD的动作,在union的操作中,如果要进行合并的两个rdd的partitioner的算子实例是同一个实例时,表示这两个rdd有相同的分区方法,合并后的RDD为PartitionerAwareUnionRDD实例.否则生成UnionRDD实例. Union的实现代码:def union(other: RDD[T]
2016-01-28 18:01:00
2260
原创 spark transform系列__intersection
这个transform返回的是进行操作的两个RDD中,key-value都相同的所有的数据集的新的RDD.说白了就是把两个RDD中数据完全相同的数据进行保留,不相同的数据直接丢弃掉.这个操作会执行shuffle操作. 实现代码: def intersection(other: RDD[T]): RDD[T] = withScope {这里首先执行对第一个rdd的map操作,执行
2016-01-28 17:58:09
2051
原创 spark transform系列__mapPartitions
mapPartitions/mapPartitionsWithIndex这两个transform中:mapPartitions与map的区别是map中是对每个partition中的iterator执行map操作,对map过程中的每一条record进行传入的function的处理,而mapPartitions是把partition中整个iterator传给function进行处理.如果是map操
2016-01-28 17:55:16
1132
原创 spark transform系列__sample
Sample是对rdd中的数据集进行采样,并生成一个新的RDD,这个新的RDD只有原来RDD的部分数据,这个保留的数据集大小由fraction来进行控制,这个分析中,不分析sample的两个算法的具体实现,如果后期有必要时,可以分析这两个算法的具体的实现.首先,先看看sample的实现代码:def sample( withReplacement: Boolean, fr
2016-01-28 17:45:27
5183
原创 spark transform系列__reduceByKey
reduceByKey通过PairRDDFunctions进行的实现,reduceByKey的操作是把两个V类型的值进行处理,并最终返回的还是一个V类型的结果(V类型就是value的类型).针对一个reduceByKey的操作,需要执行shuffle的操作,也就是说如果包含有reduceByKey时,会生成两个执行的stage,第一个stage会根据shuffle的partition与分区的算子,
2016-01-28 17:22:25
1712
原创 spark transform系列__sortByKey
该函数主要功能:通过指定的排序规则与进行排序操作的分区个数,对当前的RDD中的数据集按KEY进行排序,并生成一个SHUFFLEdrdd的实例,这个过程会执行shuffle操作,在执行排序操作前,sortBy操作会执行一次到两次的数据取样的操作,取出RDD中每个PARTITION的部分数据,并根据进行分区的partition的个数,按key的compare大小把某个范围内的key放到一个指定的par
2016-01-28 17:14:15
1260
原创 spark transform系列__groupByKey
这个操作的作用根据相同的key的所有的value存储到一个集合中的一个玩意.def groupByKey(): RDD[(K, Iterable[V])] = self.withScope { groupByKey(defaultPartitioner(self))}在做groupByKey的操作时,由于需要根据key对数据进行重新的分区操作,因此这个操作需要有一个partiti
2016-01-28 11:35:54
1316
关于Hbase的cache配置
关于Hbase的cache配置在hbase中的hfilecache中,0.96版本中新增加了bucket cache,bucket cache通过把hbase.offheapcache.percentage配置为0来启用,如果hbase.offheapcache.percentage的配置值大于0时,直接使用堆外内存来管理hbase的cache,通过把hfile.block.ca...
2014-07-15 16:24:40
301
hadoop ha配置
HADOOP HA配置hadoop2.x的ha配置,此文档中描述有hdfs与yarn的ha配置。此文档的假定条件是zk已经安装并配置完成,其实也没什么安装的。hdfs ha配置首先,先配置core-site.xml配置文件:<property>在老版本中使用mr1时,还可能使用fs.default.name来进行配置 <name>fs...
2014-05-15 20:30:07
229
原创 hadoop-ha配置
HADOOP HA配置hadoop2.x的ha配置,此文档中描述有hdfs与yarn的ha配置。此文档的假定条件是zk已经安装并配置完成,其实也没什么安装的。hdfs ha配置 首先,先配置core-site.xml配置文件:在老版本中使用mr1时,还可能使用fs.default.name来进行配置 fs.defaultFS此处配置的mycluster目前还没
2014-05-15 20:25:05
3716
原创 hadoop-mapreduce中reducetask运行分析
ReduceTask的运行Reduce处理程序中需要执行三个类型的处理,1.copy,从各map中copy数据过来2.sort,对数据进行排序操作。3.reduce,执行业务逻辑的处理。ReduceTask的运行也是通过run方法开始,通过mapreduce.job.reduce.shuffle.consumer.plugin.class配置shuffle的plugin,
2014-05-14 13:30:00
1966
hadoop-mapreduce中reducetask运行分析
ReduceTask的运行 Reduce处理程序中需要执行三个类型的处理, 1.copy,从各map中copy数据过来 2.sort,对数据进行排序操作。 3.reduce,执行业务逻辑的处理。 ReduceTask的运行也是通过run方法开始, 通过mapreduce.job.reduce.shuffle.consumer.plugin.c...
2014-05-14 13:29:25
331
hadoop-mapreduce中maptask运行分析
MapTask运行通过执行.run方法: 1.生成TaskAttemptContextImpl实例,此实例中的Configuration就是job本身。 2.得到用户定义的Mapper实现类,也就是map函数的类。 3.得到InputFormat实现类。 4.得到当前task对应的InputSplit. 5.通过InputFormat,得到对应的Rec...
2014-05-13 12:48:31
164
原创 hadoop-mapreduce中maptask运行分析
MapTask运行通过执行.run方法:1.生成TaskAttemptContextImpl实例,此实例中的Configuration就是job本身。2.得到用户定义的Mapper实现类,也就是map函数的类。3.得到InputFormat实现类。4.得到当前task对应的InputSplit.5.通过InputFormat,得到对应的RecordReader。6.生成Re
2014-05-13 12:42:03
2784
hbase hfilev2文件
HFileV2文件 HFileV2文件写入通过StoreFile.Writer-->HFileWriterV2进行写入。 文件格式通过hfile.format.version配置。默认为2,也只有2这个值在0.96可用。 可通过cf中配置DATA_BLOCK_ENCODING配置dataBlock的encoding, 可配置值:NONE,PREFIX...
2014-05-10 21:58:16
145
原创 hbase hfilev2
HFileV2文件HFileV2文件写入通过StoreFile.Writer-->HFileWriterV2进行写入。文件格式通过hfile.format.version配置。默认为2,也只有2这个值在0.96可用。可通过cf中配置DATA_BLOCK_ENCODING配置dataBlock的encoding,可配置值:NONE,PREFIX,DIFF,FAST_DIFF,PREF
2014-05-10 21:57:51
1632
Hbase MemStoreLAB
关于MemStore的补充 在通过HStore.add向store中添加一个kv时,首先把数据写入到memstore中。这一点没有什么说明; publiclong add(final KeyValue kv) { lock.readLock().lock(); try { returnthis.memstore.add(kv); } fi...
2014-05-10 10:17:45
237
原创 hbase memstorelab
关于MemStore的补充在通过HStore.add向store中添加一个kv时,首先把数据写入到memstore中。这一点没有什么说明;publiclongadd(finalKeyValue kv) {lock.readLock().lock();try{returnthis.memstore.add(kv);}finally{lock.readLock().un
2014-05-10 10:15:46
1137
spark shuffle部分分析
spark shuffle流程分析 回到ShuffleMapTask.runTask函数 现在回到ShuffleMapTask.runTask函数中: override def runTask(context: TaskContext): MapStatus = { 首先得到要reduce的task的个数。 valnumOutputSplits...
2014-05-09 13:37:38
194
原创 spark shuffle过程分析
spark shuffle流程分析回到ShuffleMapTask.runTask函数现在回到ShuffleMapTask.runTask函数中:overridedef runTask(context:TaskContext): MapStatus = {首先得到要reduce的task的个数。valnumOutputSplits=dep.partitioner.num
2014-05-09 13:36:18
3348
Task的执行过程分析
Task的执行过程分析 Task的执行通过Worker启动时生成的Executor实例进行, case RegisteredExecutor(sparkProperties) => logInfo("Successfully registered with driver") // Make this host instead of hostPort ...
2014-05-08 12:32:00
256
原创 Task的执行过程分析
Task的执行过程分析Task的执行通过Worker启动时生成的Executor实例进行,caseRegisteredExecutor(sparkProperties)=>logInfo("Successfullyregistered with driver")//Make this host instead of hostPort ?executor=newExecuto
2014-05-08 12:31:27
3812
Spark中的Scheduler
Spark中的Scheduler scheduler分成两个类型,一个是TaskScheduler与其实现,一个是DAGScheduler。 TaskScheduler:主要负责各stage中传入的task的执行与调度。 DAGScheduler:主要负责对JOB中的各种依赖进行解析,根据RDD的依赖生成stage并通知TaskScheduler执行。 实例生...
2014-05-03 21:23:35
170
原创 Spark中的Scheduler
Spark中的Schedulerscheduler分成两个类型,一个是TaskScheduler与其实现,一个是DAGScheduler。TaskScheduler:主要负责各stage中传入的task的执行与调度。DAGScheduler:主要负责对JOB中的各种依赖进行解析,根据RDD的依赖生成stage并通知TaskScheduler执行。实例生成TaskSchedule
2014-05-03 21:17:30
2265
RDD的依赖关系
RDD的依赖关系 Rdd之间的依赖关系通过rdd中的getDependencies来进行表示, 在提交job后,会通过在 DAGShuduler.submitStage-->getMissingParentStages privatedef getMissingParentStages(stage: Stage): List[Stage] = { va...
2014-05-03 01:39:03
134
原创 RDD的依赖关系
RDD的依赖关系Rdd之间的依赖关系通过rdd中的getDependencies来进行表示,在提交job后,会通过在DAGShuduler.submitStage-->getMissingParentStagesprivatedefgetMissingParentStages(stage: Stage): List[Stage] = {valmissing =newHash
2014-05-03 01:32:19
3227
从wordcount分析spark提交job
从WordCount开始分析 编写一个例子程序 编写一个从HDFS中读取并计算wordcount的例子程序: package org.apache.spark.examples import org.apache.spark.SparkContext import org.apache.spark.SparkContext._ ...
2014-05-02 12:51:37
173
原创 spark 启动job的流程分析
从WordCount开始分析编写一个例子程序编写一个从HDFS中读取并计算wordcount的例子程序:packageorg.apache.spark.examplesimportorg.apache.spark.SparkContextimportorg.apache.spark.SparkContext._objectWordCount{defm
2014-05-02 12:47:18
4574
spark编译与onyarn的运行
Spark on yarn执行流程源代码分析 目前的分析主要基于spark0.9.0的cdh5的版本进行分析, 源代码下载地址:https://github.com/cloudera/spark.git 下载方式:git clone url ./spark 进入spark目录,执行git checkout cdh5-0.9.0_5.0.0 ...
2014-04-28 14:40:43
125
原创 spark编译与onyarn的运行
Spark on yarn执行流程源代码分析目前的分析主要基于spark0.9.0的cdh5的版本进行分析,源代码下载地址:https://github.com/cloudera/spark.git下载方式:gitclone url ./spark进入spark目录,执行gitcheckoutcdh5-0.9.0_5.0.0源代码编译使用sbt编译spa
2014-04-28 14:35:06
2257
UserScan的处理流程分析
UserScan的处理流程分析 前置说明 Userscan是通过client或cp中发起的scanner操作。 在Scan中通过caching属性来返回可以返回多少条数据,每次进行next时。 通过batch属性来设置每次在rs端每次next kv时,可读取多少个kv,(在同一行的情况下) 在生成Scan实例时,最好是把family与column都设...
2014-04-25 16:46:55
429
原创 UserScan的处理流程分析
UserScan的处理流程分析前置说明Userscan是通过client或cp中发起的scanner操作。在Scan中通过caching属性来返回可以返回多少条数据,每次进行next时。通过batch属性来设置每次在rs端每次nextkv时,可读取多少个kv,(在同一行的情况下)在生成Scan实例时,最好是把family与column都设置上,这样能保证查询的最高效.cli
2014-04-25 16:41:13
2119
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅