Scala
文章平均质量分 92
Scala编程相关内容
蒋含竹
非淡泊无以明志,非宁静无以致远。
展开
-
Spark源码剖析——SparkContext实例化
文章目录Spark源码剖析——SparkContext实例化当前环境与版本前言SparkContext实例化的主要逻辑LiveListenerBus的作用createSparkEnv的过程创建不同的SchedulerBackend、TaskSchedulerDAGSchedulerSpark源码剖析——SparkContext实例化当前环境与版本环境版本JDKjava ...原创 2020-03-21 22:52:03 · 1530 阅读 · 0 评论 -
Spark源码剖析——SparkSubmit提交流程
文章目录Spark源码剖析——SparkSubmit提交流程当前环境与版本前言Shell命令部分参数解析 MainSparkSubmitSpark源码剖析——SparkSubmit提交流程当前环境与版本环境版本JDKjava version “1.8.0_231” (HotSpot)SaclaScala-2.11.12Sparkspark-2.4.4...原创 2020-03-11 21:30:33 · 2192 阅读 · 0 评论 -
Spark源码剖析——Action操作、runJob流程
文章目录Spark源码剖析——Action操作、runJob流程当前环境与版本前言供分析的代码collect 源码分析DAGScheduler中的处理TaskScheduler中的处理CoarseGrainedSchedulerBackend、DriverEndpoint中的处理Executor中的处理Spark源码剖析——Action操作、runJob流程当前环境与版本环境版本JDKjava version “1.8.0_231” (HotSpot)ScalaScala原创 2020-07-09 13:52:50 · 608 阅读 · 0 评论 -
Spark代码可读性与性能优化——示例十一(SQL与代码-蚂蚁森林示例)
文章目录Spark代码可读性与性能优化——示例十一(SQL与代码-蚂蚁森林示例)前言业务描述使用SQL解决业务问题 - 方案1使用SQL解决业务问题 - 方案2使用代码带来更高的性能Spark代码可读性与性能优化——示例十一(SQL与代码-蚂蚁森林示例)前言编写SQL处理业务问题,通常有简单易用、便捷、适用人群广泛等优点,是数据分析师的不二之选。但是,SQL易用的同时也带来了性能的问题,当为了解决某些复杂的业务时,你不得不编写几十至几百行很复杂的SQL来处理。由于为了实现复杂的业务,SQL中会存在原创 2020-05-31 00:08:36 · 719 阅读 · 2 评论 -
Spark源码剖析——Master、Worker启动流程
文章目录Spark源码剖析——Master、Worker启动流程当前环境与版本1. 前言2. Master启动流程2.1 Master的伴生对象2.2 Master3. Worker启动流程3.1 Worker的伴生对象3.2 Worker4. Master与Worker的初步交互(注册)Spark源码剖析——Master、Worker启动流程当前环境与版本环境版本JDK...原创 2020-02-29 18:05:04 · 1309 阅读 · 0 评论 -
Spark源码剖析——RpcEndpoint、RpcEnv
文章目录Spark源码剖析——RpcEndpoint、RpcEnv当前环境与版本1. 前言2. RpcEndpoint2.1 核心UML图2.2 RpcEndpoint源码分析3. RpcEndpointRef3.1 RpcEndpointRef3.2 NettyRpcEndpointRef4. RpcEnvSpark源码剖析——RpcEndpoint、RpcEnv当前环境与版本环境...原创 2020-02-26 00:39:37 · 1431 阅读 · 0 评论 -
Spark优化总结(二)——代码编写
文章目录Spark优化总结(二)——代码编写1. 前言2. 选择合理的数据结构3. Java容器与Scala容器互转4. 关注经常执行的代码块5. Spark API6. 广播的问题7. 数据传输与解析8. 设计一个合宜的项目结构Spark优化总结(二)——代码编写1. 前言编写一个性能较高的Spark应,需要有良好的代码编写功底。一块不好的代码,通常会导致BUG、效率缓慢等问题,而经常需...原创 2020-01-03 16:00:37 · 2346 阅读 · 2 评论 -
Spark代码可读性与性能优化——示例十(项目结构)
文章目录Spark代码可读性与性能优化——示例十(项目结构)前言安排好每个包下的类为Spark应用设计一个模板基类Spark代码可读性与性能优化——示例十(项目结构)前言安排好每个包下的类安排好各个包的功能,可以方便查看项目代码结构,明确功能,有利降低开发的混乱度在这里,举一个可供参考的示例,如下解释app 用于存放开发的Spark应用common 用于存放通用的配置,或者某......原创 2020-01-02 19:34:36 · 2021 阅读 · 0 评论 -
Spark代码可读性与性能优化——示例九(数据传输与解析)
文章目录Spark代码可读性与性能优化——示例九(数据传输与解析)1. 前言2. Kyro序列化3. csv解析4. json解析5. 其他Spark代码可读性与性能优化——示例九(数据传输与解析)1. 前言通常数据传输与解析是开发人员不常关心的一个方面,会直接使用最便利的方式处理。但是,无论是数据在网络中的传输还是数据的解析方式都会对性能产生影响。下面就举几个例子来说明该如何处理数据。...原创 2020-01-02 16:32:57 · 1734 阅读 · 0 评论 -
Spark优化总结(一)——数据倾斜
文章目录Spark优化总结(一)——数据倾斜1. 前言2. 数据源倾斜3. 存储结果倾斜4. 运行时数据倾斜4.1 过滤导致的数据不均4.2 join导致的数据不均4.3 groupBy导致的数据不均Spark优化总结(一)——数据倾斜1. 前言在Spark应用开发过程中,通常大多数性能问题是在数据倾斜点上。针对数据倾斜问题,我们可以运行状态分出以下几点:数据源倾斜存储结果倾斜运行...原创 2020-01-02 12:24:12 · 2076 阅读 · 4 评论 -
网络通信框架——KyroNet示例
文章目录网络通信框架——KyroNet示例简介使用方式网络通信框架——KyroNet示例简介KyroNet是一款TCP和UDP的Java封装库,连接方式采用了NIO,传输数据的序列化方式采用了Kyro。主要用于client/server模式的应用,非常高效,特别适合游戏相似的框架: Apache MINA、PyroNet 、Java Game Networking GitHub仓库...原创 2019-12-27 01:35:31 · 1138 阅读 · 0 评论 -
Spark代码可读性与性能优化——示例八(一个业务逻辑,多种解决方式)
文章目录Spark代码可读性与性能优化——示例八(一个业务逻辑,多种解决方式)1. 前情提要2. 需求展示3. 问题分析4. 多种解决方式的示例Spark代码可读性与性能优化——示例八(一个业务逻辑,多种解决方式)1. 前情提要在示例七的末尾种提出了一个需求“同时统计某个表所有字段对应的值的总数、去重后的总数,并要求对应字段值非空”。如果你看过示例七,显然应该知道怎么解决。写这篇文章的目...原创 2019-12-02 18:36:42 · 3401 阅读 · 0 评论 -
Spark代码可读性与性能优化——示例七(构建聚合器,以用于复杂聚合)
文章目录Spark代码可读性与性能优化——示例七(GroupBy、ReduceByKey)1. 多列聚合1.1 前情提要1.2 尝试进行本地多列聚合1.3 多列聚合最终代码2. 单列多重聚合2.1 前情提要2.2 尝试进行本地单列多重聚合2.3 单列多重聚合最终代码3. 多列多重聚合4. 总结与整理Spark代码可读性与性能优化——示例七(GroupBy、ReduceByKey)接第六篇,如......原创 2019-11-27 04:33:41 · 5066 阅读 · 1 评论 -
数据序列化框架——Kryo
文章目录数据序列化框架——Kryo1. 概览2. Java中使用Kryo示例2. Scala中使用Kryo示例数据序列化框架——Kryo1. 概览简介 Kryo是一款专用于Java的快速、高效的数据序列化的框架,同时也支持Scala、Clojure、Objective-C等特点快速、高效、占用空间小使用简单(不用像protobuf一样...原创 2019-08-22 11:49:33 · 4309 阅读 · 0 评论 -
Spark代码可读性与性能优化——示例六(groupBy、reduceByKey、aggregateByKey)
文章目录Spark代码可读性与性能优化——示例六(GroupBy、ReduceByKey)0. 需求:统计历年全国高考生中数学成绩前100名1. 数据示例2. 存在问题的代码示例3. 如何解决代码中的问题?4. 最终代码,以及附其他代码Spark代码可读性与性能优化——示例六(GroupBy、ReduceByKey)0. 需求:统计历年全国高考生中数学成绩前100名1. 数据示例i...原创 2019-05-16 02:03:10 · 5515 阅读 · 1 评论 -
Spark代码可读性与性能优化——示例五(MapJoin)
文章目录Spark代码可读性与性能优化——示例五(HashJoin)1. 内容点大纲2. 原代码3. 优化后的代码+注释Spark代码可读性与性能优化——示例五(HashJoin)1. 内容点大纲数据集之间的Join大数据集、小数据集数据倾斜减少Shuffle更好的写法 flatMap + Some + None广播常见的陷阱*注意:和前面文章内容重复的不再做提示,已直接修改...原创 2019-04-26 00:10:26 · 4004 阅读 · 1 评论 -
Scala方法和函数的本质区别——反编译解析
文章目录Scala的方法和函数有什么区别——反编译解析1. 方法-解析1.1 普通方法1.2 嵌套方法2. 函数-解析2.1 函数示例2.2 反编译结果2.3 函数反编译解析3. 为什么方法和函数可以相互转换?3.1 方法和函数混用示例3.2 方法与函数转换-解析3.3 混用示例-解析Scala的方法和函数有什么区别——反编译解析1. 方法-解析1.1 普通方法普通方法,即平常在clas...原创 2019-04-15 23:32:43 · 3523 阅读 · 0 评论 -
Spark代码可读性与性能优化——示例四
文章目录Spark代码可读性与性能优化——示例四1. 内容点大纲2. 原代码(来自GitHub)3. 优化后的代码+注释Spark代码可读性与性能优化——示例四1. 内容点大纲更简洁的写法易懂的写法返回类型提示本地打印提示代码换行提示占位符提示*注意:和前面文章内容重复的不再做提示,已直接修改2. 原代码(来自GitHub)import org.apache.spark....原创 2019-04-15 00:35:06 · 788 阅读 · 1 评论 -
Spark代码可读性与性能优化——示例三
文章目录Spark代码可读性与性能优化——示例二1. 内容点大纲2. 原代码(来自GitHub)3. 优化后的代码+注释Spark代码可读性与性能优化——示例二1. 内容点大纲无意义代码清除提示数据本地获取提示unpersist解除缓存优化提示使用匹配模式的提示代码简写提示*注意:和前面文章内容重复的不再做提示,已直接修改2. 原代码(来自GitHub)import sca...原创 2019-04-10 01:16:20 · 871 阅读 · 1 评论 -
Spark代码可读性与性能优化——示例二
文章目录Spark代码可读性与性能优化——示例二1. 内容点大纲2. 原代码(来自GitHub)3. 优化后的代码+注释Spark代码可读性与性能优化——示例二1. 内容点大纲SparkConf可读性提示Scala语法可读性提示方法默认值提示代码冗余写法提示函数式写法提示persist缓存性能优化提示sc.stop()性能优化提示注意:不同示例之间的内容点经常会有重复,意在强...原创 2019-04-06 13:51:48 · 782 阅读 · 1 评论 -
Spark代码可读性与性能优化——示例一
文章目录Spark代码可读性与性能优化——示例一1. 内容大纲2. 原代码(来自GitHub)3. 优化后的代码+注释Spark代码可读性与性能优化——示例一1. 内容大纲SparkConf可读性提示Scala语法可读性提示mkString可读性提示persist缓存性能优化提示sc.stop()性能优化提示2. 原代码(来自GitHub)import org.apache....原创 2019-04-06 13:19:04 · 857 阅读 · 1 评论 -
概率编程——Figaro的基础示例
文章目录概率编程——Figaro的基础示例0. 导包1. 原子元素2. 复合元素3. 条件与约束概率编程——Figaro的基础示例0. 导包import com.cra.figaro.algorithm.factored.VariableEliminationimport com.cra.figaro.algorithm.sampling.Importanceimport com.cra...原创 2019-03-20 22:51:08 · 735 阅读 · 0 评论 -
概率编程——Figaro的HelloWorld示例
文章目录概率编程——HelloWorld示例0. 导包1. 定义概率模型2. 推测方法3. Main 预测概率编程——HelloWorld示例0. 导包import com.cra.figaro.algorithm.factored.VariableEliminationimport com.cra.figaro.language.{Flip, Select}import com.cra...原创 2019-03-19 00:41:50 · 777 阅读 · 0 评论 -
Guava——Splitter与Java原生split(附Scala示例)
文章目录1. 几种拆分方式1.1 按分隔符拆分1.2 按长度拆分1.3 按正则拆分1.4 只拆分前几个元素2. 拆分后续处理2.1 删除空字符串元素2.2 对结果元素进行trim(默认去掉空格)2.3 对拆分结果再次拆分,生成Map附:Scala示例1. 几种拆分方式1.1 按分隔符拆分String line1 = "C|Java|C++|Go|Python|Scala";// java...原创 2019-02-03 01:38:19 · 846 阅读 · 0 评论 -
Guava——Joiner与Java8Stream(附Scala示例)
文章目录数据代码准备Joiner和Java8Stream普通方式跳过null使用默认值替换null为Map添加分隔符Joiner之appendjoin后,追加到StringBuilder中join后,输入到File中另附:Scala 示例数据代码准备普通的ListList<String> list1 = Arrays.asList( "C&q原创 2019-02-02 23:25:27 · 859 阅读 · 0 评论 -
Spark示例——可恢复的SparkStreaming应用
关键点SparkStreaming 流式处理Kafka消费应用从上一次停止处恢复checkpoint代码 + 说明import kafka.serializer.StringDecoderimport org.apache.spark.SparkConfimport org.apache.spark.streaming.kafka.KafkaUtilsimport org.a...原创 2018-12-30 01:30:12 · 260 阅读 · 0 评论 -
Scala重试工具Retry
Scala重试工具Retry主要包括递归Curry化异常捕获scala.util.Try代码import scala.annotation.tailrecimport scala.util.{Failure, Success, Try}/** * Retry 重试工具 * <p> * Date: 2018/1/19 9:58 * @author ALio...原创 2018-12-14 12:41:21 · 1407 阅读 · 0 评论 -
Scala学习笔记——20170820
List集合中的各种方法**注意**List集合是不可变的,增、删、改只会返回一个新的集合object ListDemo0819 { def main(args: Array[String]): Unit = { val list = List(1 to 20 by 2: _*) //后一个元素 = 前一个元素 + 2 println("list->" + lis原创 2017-08-20 15:04:21 · 1606 阅读 · 0 评论 -
Scala学习笔记——20170819
Scala 闭包object Demo { def main(args: Array[String]): Unit = { a(0) aa(1)(2)//先返回一个函数,向函数传一个值 } //闭包 def a(x: Int): Unit = { var num = 1 def b(y: Int): Unit =原创 2017-08-20 14:47:05 · 1596 阅读 · 0 评论 -
Scala学习笔记——20170818
Scala 函数定义一个函数def addInt(a: Int, b: Int): Int = { return a + b//scala中return可以不写}调用一个函数var sum = addInt(1, 2)//返回一个值匿名函数var num = (x:Int) => x+1//--------------------分界线--------------------原创 2017-08-20 14:41:31 · 1433 阅读 · 0 评论 -
Scala学习笔记——20170817
Scala入门可伸缩面向对象函数式基于JVM可调用丰富的Java类库静态类型(编译时检查)扩展性应用 Spark由scala编写Scala安装java下载.tar.gz包 http://www.oracle.com/technetwork/java/javase/downloads/index.html解压到/usr/local/java/下配置环境变量 vim /etc/p原创 2017-08-18 21:27:30 · 1600 阅读 · 0 评论