为啥你的SQL慢?为啥你建的索引常失效? 怎么知道该sql是全表扫描呢?通过explain命令可以清楚MySQL是如何处理sql语句的。id : 查询序列号为1select_type : 查询类型是简单查询,简单的select语句没有union和子查询table :表是 itdragon_order_list。partitions :没有分区type : 连接类型,all表示采用全表扫描的方式。possible_keys...
Spark:spark-evn.sh参数详解 SPARK_MASTER_IP指定master进程所在的机器的ip地址SPARK_MASTER_PORT指定master监听的端口号(默认是7077)SPARK_MASTER_WEBUI_PORT指定master web ui的端口号(默认是8080)SPARK_MASTER_OPTS设置master的额外参数,使用"-Dx=y"设置各个参数。例:export SPARK_MAST...
Scala:高级特性 跳出循环语句使用boolean控制变量var flag = truevar res = 0for (i <- 0 until 10 if flag) { res += i if (i == 4) flag = false}在嵌套函数中使用returndef add_outer() = { var res = 0 def add_inner() { ...
Spark Streaming:工作原理 Spark Streaming简介Spark Streaming是Spark Core API的一种扩展,它可以用于进行大规模、高吞吐量、容错的实时数据流的处理。它支持从很多种数据源中读取数据,比如Kafka、Flume、Twitter、ZeroMQ、Kinesis或者是TCP Socket。并且能够使用类似高阶函数的复杂算法来进行数据处理,比如map、reduce、join和window。处理...
Spark Streaming:DStream的transformationy及output操作 updateStateByKeyupdateStateByKey操作允许您在使用新的信息持续更新时保持任意状态public class UpdateStateByKeyWordCount { public static void main(String[] args) throws InterruptedException { SparkConf conf = new SparkCo...
Spark Streaming:输入DStream之Kafka数据源 基于Receiver的方式这种方式使用Receiver来获取数据。Receiver是使用Kafka的高层次Consumer API来实现的。receiver从Kafka中获取的数据都是存储在Spark Executor的内存中的,然后Spark Streaming启动的job会去处理那些数据在默认的配置下,这种方式可能会因为底层的失败而丢失数据。如果要启用高可靠机制,让数据零丢失,就必须启用S...
Spark SQL:运行原理 Spark SQL的运行过程SQL在Spark执行要经历以下几步:用户提交SQL文本解析器将SQL文本解析成逻辑计划分析器结合Catalog对逻辑计划做进一步分析,验证表是否存在,操作是否支持等优化器对分析器分析的逻辑计划做进一步优化,如将过滤逻辑下推到子查询,查询改写,子查询共用等Planner再将优化后的逻辑计划根据预先设定的映射逻辑转换为物理执行计划物理执行计划做RDD计算...
Spark SQL:UDF和UDAF UDF用户定义函数(User-defined functions, UDFs)是大多数 SQL 环境的关键特性,用于扩展系统的内置功能。 UDF允许开发人员通过抽象其低级语言实现来在更高级语言(如SQL)中启用新功能。 Apache Spark 也不例外,并且提供了用于将 UDF 与 Spark SQL工作流集成的各种选项。object UDF { def main(args: Arra...
Spark:shuffle数据倾斜 数据倾斜Shuffle的时候,将各个节点上相同的key拉取到某个节点的一个task进行处理,比如按照key进行聚合或join等操作,如果某个key对应的数据量特别大的话,就会发生数据倾斜现象。数据倾斜就成为了整个task运行时间的短板。因此出现数据倾斜的时候,Spark作业看起来会运行得非常缓慢,甚至可能因为某个task处理的数据量过大导致内存溢出。数据倾斜的解决方案方案一:使用Hive...
Spark:性能优化 诊断内存的消耗判断spark程序消耗了多少内存首先,自己设置RDD的并行度,有两种方式:要不然,在parallelize()、textFile()等方法中,传入第二个参数,设置RDD的task / partition的数量;要不然,用SparkConf.set()方法,设置一个参数,spark.default.parallelism,可以统一设置这个application所有RDD的part...
Spark:内存分析与优化 概述执行 Spark 的应用程序时,Spark 集群会启动 Driver 和 Executor 两种 JVM 进程,前者为主控进程,负责创建 Spark 上下文,提交 Spark 作业(Job),并将作业转化为计算任务(Task),在各个 Executor 进程间协调任务的调度,后者负责在工作节点上执行具体的计算任务,并将结果返回给 Driver,同时为需要持久化的 RDD 提供存储功能。由于 ...
Spark:Checkpoint原理剖析与源码分析 一、概述Checkpoint是什么?Spark在生产环境下经常会面临Tranformations的RDD非常多(例如一个Job中包含1万个RDD)或者具体Tranformation产生的RDD本身计算特别复杂和耗时(例如计算时常超过1~5个小时),此时我们必须考虑对计算结果数据的持久化。如果采用persist把数据放在内存中的话,虽然是最快速的但是也是最不可靠的;如果放在磁盘上也不是完全可靠的...
Spark:BlockManager原理剖析与源码分析 BlockManager是Spark的分布式存储系统,与我们平常说的分布式存储系统是有区别的,区别就是这个分布式存储系统只会管理Block块数据,它运行在所有节点上。BlockManager的结构是Maser-Slave架构,Master就是Driver上的BlockManagerMaster,Slave就是每个Executor上的BlockManager。BlockManagerMaster负责...
Spark:Shuffle原理剖析与源码分析 spark中的Shuffle是非常重要的,shuffle不管在Hadoop中还是Spark中都是重重之重,特别是在Spark shuffle优化的时间。更是非常的重要。普通shuffle操作的原理剖析(spark 2.x弃用)每一个Job提交后都会生成一个ResultStage和若干个ShuffleMapStage,其中ResultStage表示生成作业的最终结果所在的Stage;Result...
Spark:Task原理剖析与源码分析 在Spark中,一个应用程序要想被执行,肯定要经过以下的步骤:从这个路线得知,最终一个job是依赖于分布在集群不同节点中的task,通过并行或者并发的运行来完成真正的工作。由此可见,一个个的分布式的task才是Spark的真正执行者。下面先来张task运行框架整体的对Spark的task运行有个大概的了解。task运行之前的工作是Worker启动Executor,接着Executor准备好...
Spark:Executor原理剖析与源码分析 Executor原理示意图Executor进程的启动worker中为application启动的executor,实际上是启动的这个CoarseGrainedExecutorBackend进程.源码分析:第一步:CoarseGrainedExecutorBackend源码源码地址:org.apache.spark.executor.CoarseGrainedExecutorBack...
Spark:TaskScheduler原理剖析与源码分析 TaskScheduler是一个接口,DAGScheduler在提交TaskSet给底层调度器的时候是面向接口TaskScheduler。TaskSchduler的核心任务是提交Taskset到集群运算并汇报结果源码分析第一步:TaskScheduler 提交tasks的入口 submitTasks源码地址:org.apache.spark.scheduler.TaskSchedulerIm...
Spark:TaskScheduler原理剖析与源码分析 TaskScheduler是一个接口,DAGScheduler在提交TaskSet给底层调度器的时候是面向接口TaskScheduler。TaskSchduler的核心任务是提交Taskset到集群运算并汇报结果源码分析第一步:TaskScheduler 提交tasks的入口 submitTasks源码地址:org.apache.spark.scheduler.TaskSchedulerIm...
Spark:DAGScheduler原理剖析与源码分析 Job触发流程原理与源码解析wordcount案例解析,来分析Spark Job的触发流程代码:var linesRDD= sc.textFile('hdfs://')SparkContext中textFile方法 /** * hadoopFile方法调用会创建一个HadoopRDD,其中的元素pair是(key,value) * key是hdfs或者文本文件的每一行的of...