Spark
文章平均质量分 88
亮亮-AC米兰
这个人什么都没留下
展开
-
Driver端如何正确取消Spark中的job
1. SparkContext提供了一个取消job的apiclass SparkContext(config: SparkConf) extends Logging with ExecutorAllocationClient {/** Cancel a given job if it's scheduled or running */private[spark] def canc原创 2016-03-30 16:31:54 · 8723 阅读 · 0 评论 -
Spark-Sql源码解析之八 Codegen
Codegen,动态字节码技术,那么什么是动态字节码技术呢?先看来一段代码,假设SparkPlan为Sortcase class Sort( sortOrder: Seq[SortOrder], global: Boolean, child: SparkPlan) extends UnaryNode { override def requiredChildDis原创 2016-08-12 13:06:58 · 6182 阅读 · 1 评论 -
Mongo+Spark
本文转载自:http://www.mongoing.com/tj/mongodb_shanghai_spark介绍按照官方的定义,Spark 是一个通用,快速,适用于大规模数据的处理引擎。通用性:我们可以使用Spark SQL来执行常规分析, Spark Streaming 来流数据处理, 以及用Mlib来执行机器学习等。Java,python,scala及R语言的转载 2017-02-07 16:17:52 · 1736 阅读 · 0 评论 -
Spark分区器HashPartitioner和RangePartitioner代码详解
1.HashPartitioner分区怎么用源码解析?2.RangePartitioner分区怎么用源码解析?3.定位分区ID怎么用源码解析? 在Spark中分区器直接决定了RDD中分区的个数;也决定了RDD中每条数据经过Shuffle过程属于哪个分区;也决定了Reduce的个数。这三点看起来是不同的方面的,但其深层的含义是一致的。转载 2017-02-09 17:23:55 · 1709 阅读 · 0 评论 -
Spark算子执行流程详解之一
1.take(num:Int)获取前num条记录。def take(num: Int): Array[T] = withScope { if (num == 0) { new Array[T](0) } else { val buf = newArrayBuffer[T] val totalParts = this.pa原创 2017-03-02 09:55:18 · 2086 阅读 · 0 评论 -
Spark算子执行流程详解之二
4.count()def count(): Long = sc.runJob(this, Utils.getIteratorSize_).sum计算数据总量,每个分区各自计算自己的总数,然后汇总到driver端,driver端再把每个分区的总数相加统计出对应rdd的数据量,其流程如下: 5.countApprox( timeou原创 2017-03-02 10:09:20 · 2579 阅读 · 0 评论 -
Spark算子执行流程详解之三
10.aggregate[U: ClassTag](zeroValue: U)(seqOp: (U, T) => U, combOp: (U, U) => U)用与聚合RDD中的元素,先使用seqOp将RDD中每个分区中的T类型元素聚合成U类型,再使用combOp将之前每个分区聚合后的U类型聚合成U类型,特别注意seqOp和combOp都会使用zeroValue的值,zeroValue的类原创 2017-03-02 10:21:51 · 2277 阅读 · 0 评论 -
Spark算子执行流程详解之四
17.map/** * Return a new RDD by applying a function to all elements of this RDD. */def map[U: ClassTag](f:T => U): RDD[U] = withScope { val cleanF = sc.clean(f) new MapPartit原创 2017-03-02 10:30:51 · 1602 阅读 · 0 评论 -
Spark算子执行流程详解之五
22.combineByKey def combineByKey[C](createCombiner:V => C, mergeValue: (C, V) => C, mergeCombiners: (C, C) => C, partitioner: Partitioner, mapSideCombine: Boole原创 2017-03-02 10:42:18 · 1578 阅读 · 0 评论 -
Spark算子执行流程详解之六
26.coalescecoalesce顾名思义为合并,就是把多个分区的RDD合并成少量分区的RDD,这样可以减少任务调度的时间,但是请记住:合并之后不能保证结果RDD中的每个分区的记录数量是均衡的,因为合并的时候并没有考虑合并前每个分区的记录数,合并只会减少RDD的分区个数,因此并不能利用它来解决数据倾斜的问题。def coalesce(numPartitions: I原创 2017-03-02 11:11:45 · 2159 阅读 · 0 评论 -
Spark算子执行流程详解之七
31.union将2个rdd合并在一起。def union(other: RDD[T]): RDD[T] = withScope { if (partitioner.isDefined && other.partitioner == partitioner) {//两者的分区函数相同 new PartitionerAwareUnionRDD(sc, Ar原创 2017-03-02 11:36:52 · 1224 阅读 · 0 评论 -
Spark-Sql源码解析之七 Execute: executed Plan -> RDD[Row]
SparkPlan如何执行呢,SparkPlan是如何转变为RDD[Row]的呢?首先看一段代码:SQLContext sqlContext = new SQLContext(jsc);DataFrame dataFrame = sqlContext.parquetFile(parquetPath);dataFrame.registerTempTable(source);String s原创 2016-08-12 13:03:25 · 3366 阅读 · 0 评论 -
Spark-Sql源码解析之六 PrepareForExecution: spark plan -> executed Plan
在SparkPlan中插入Shuffle的操作,如果前后2个SparkPlan的outputPartitioning不一样的话,则中间需要插入Shuffle的动作,比分说聚合函数,先局部聚合,然后全局聚合,局部聚合和全局聚合的分区规则是不一样的,中间需要进行一次Shuffle。比方说sql语句:selectSUM(id) from test group by dev_chnid其从逻辑计划原创 2016-08-12 12:57:38 · 1648 阅读 · 0 评论 -
Spark-Sql源码解析之五 Spark Planner:optimized logical plan –> spark plan
前面描述的主要是逻辑计划,即sql如何被解析成logicalplan,以及logicalplan如何被analyzer以及optimzer,接下来主要介绍逻辑计划如何被翻译成物理计划,即SparkPlan。lazy val sparkPlan: SparkPlan = { SparkPlan.currentContext.set(self) planner.plan(optimized原创 2016-08-12 10:56:52 · 3124 阅读 · 0 评论 -
Spark1.4.0和hadoop联合部署的坑
Spark和hadoop联合部署的时候,需要注意配置SPARK_LOCAL_HOSTNAME环境变量,否则由可能导致HadoopRdd切分的task无法在blk所在节点运行,导致数据本地化功能缺失原创 2016-02-02 14:57:21 · 804 阅读 · 0 评论 -
Spark-Core源码阅读
吐血奉献,Spark-Core源码阅读,适合新手,详细请见链接:http://download.csdn.net/detail/wl044090432/9421721目录结构为:一. Spark的部署方式Standalone、YARN、Mesos. 21. Standalone.22. Mesos.33. YARN..原创 2016-01-29 17:08:32 · 975 阅读 · 0 评论 -
关于Spark 1.5 版本中Spark自己管理内存而不是由Java管理内存的解释
Spark1.5针对Dataframe的内存优化的解释转载 2016-01-29 15:54:19 · 869 阅读 · 3 评论 -
利用Spark Rdd生成Hfile直接导入到Hbase
针对大批量插入Hbase的场景,如果单条记录插入的时候效率比较低下,如果可以利用Rdd生成Hfile的话,然后利用Bulk Load导入Hfile的话,则会大大提升导入的速度,废话不说,直接上代码:1.利用Create创建表blog:create 'blog' ,'article'2.创建数据文件 blog.txt 3.上传文件至hdfs备注:原创 2016-03-07 18:12:15 · 11801 阅读 · 4 评论 -
Tuning-java-garbage-collection-for-spark-applications
原文链接:https://databricks.com/blog/2015/05/28/tuning-java-garbage-collection-for-spark-applications.html写得很通俗易懂,适合新手阅读转载 2016-03-31 15:08:11 · 818 阅读 · 0 评论 -
如何利用Spark提高批量插入Solr的效率
有时候我们会碰到这样的场景:利用Spark批量插入数据。因为Spark相比MR编程更方便,更容易上手。因此接下来讲讲利用Spark批量插入数据时候的注意点。假设批量往SolrCloud里面插入数据。1:利用MapPartitions针对每个分区的数据进行遍历插入,而不是利用Map针对每条数据进行插入原因:当进行插入的时候,需要获取和SolrCloud的连接,如果利用Map针对每条数据进原创 2016-03-09 11:30:23 · 6562 阅读 · 5 评论 -
Spark-Sql源码解析之二 Sqlparser:sql –> unresolved logical plan
前面章节讲解了Spark-SQL中的核心流程,接下来主要讲解如何将sql语句转化为UnResolved Logical Plan(包含UnresolvedRelation、 UnresolvedFunction、 UnresolvedAttribute)。protected[sql] def parseSql(sql: String): LogicalPlan = { val ret =原创 2016-08-11 16:18:03 · 1865 阅读 · 0 评论 -
Spark-Sql源码解析之一 引言
1.1 Demo以一个Spark-Sql的例子开始:public class TestSparkSql { public static void main(String[] args) { Logger log = Logger.getLogger(TestSparkSql.class); System.setProperty原创 2016-08-11 13:38:48 · 2482 阅读 · 0 评论 -
Spark-Sql源码解析之三 Analyzer:Unresolved logical plan –> analyzed logical plan
Analyzer主要职责就是将通过Sql Parser未能Resolved的Logical Plan给Resolved掉。lazy val analyzed: LogicalPlan = analyzer.execute(logical)//分析过的LogicalPlanprotected[sql] lazy val analyzer: Analyzer = new Analyzer(c原创 2016-08-11 16:51:33 · 3214 阅读 · 0 评论 -
Spark-Sql源码解析之四 Optimizer: analyzed logical plan –> optimized logical plan
Optimizer的主要职责是将Analyzer给Resolved的Logical Plan根据不同的优化策略Batch,来对语法树进行优化,优化逻辑计划节点(Logical Plan)以及表达式(Expression),也是转换成物理执行计划的前置。它的工作原理和analyzer一致,也是通过其下的batch里面的Rule[LogicalPlan]来进行处理的。object DefaultO原创 2016-08-12 10:49:28 · 2495 阅读 · 0 评论 -
Spark算子执行流程详解之八
36.zip将2个rdd相同位置的元素组成KV对/** * Zips this RDD with another one, returning key-value pairs with the first element in each RDD, * second element in each RDD, etc. Assumes that the two RDDs原创 2017-03-02 12:18:32 · 2377 阅读 · 0 评论