Scala
小飞猪666
这个作者很懒,什么都没留下…
展开
-
scala开发快速入门 | 第四篇 数据结构
一、集(Set)Scala中的集合分为可变的集合、不可变的集合。Set中的数据是无序的,不重复的。默认情况下,Scala使用的是不可变的集合,默认引用的是 scala.collection.immutable.Set。 如果你想使用可变的集合,需要引用 scala.collection.mutable.Set 包。区别:1)可变集合可以修改...原创 2018-06-03 21:17:10 · 612 阅读 · 0 评论 -
TaskScheduler提交TaskSets中的每个task到Executor执行源码分析
step1:DAGScheduler.scala submitTasks()方法 /** Called when stage's parents are available and we can now do its task. */ /** * 提交Stage 为stage创建一批task task数量和partition数量相同 * @param stage ...原创 2019-03-19 23:59:05 · 462 阅读 · 0 评论 -
Spark分组取TopN
1、对文本文件中的数字,获取最大的前三个。代码实例:package com.netcloud.spark.sparkcore.projectpractice;import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaPairRDD;import org.apache.spark.api.java....原创 2019-03-16 13:47:35 · 450 阅读 · 0 评论 -
基于排序机制的wordcount程序
Java代码:package com.netcloud.spark.sparkcore.projectpractice;import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaPairRDD;import org.apache.spark.api.java.JavaRDD;import org.a...原创 2019-03-13 17:58:50 · 161 阅读 · 0 评论 -
DAGScheduler 划分stage算法和提供task最佳位置算法剖析
1) sc.textFile分析/** * 1、首先hadoopFile()方法的调用会创建一个hadoopRDD,其中的元素其实是<k,value>pair * key是hdfs或者是文本文件的每一行的offset,value是文本行。然后对hadoopRDD调用map方法 * 会剔除key值,只保留value;然后会获得一个mapparti...原创 2019-03-18 23:05:10 · 389 阅读 · 0 评论 -
SparkContext初始化时如何创建TaskScheduler、发送注册Application请求、Master进行注册、以及Executor进程的启动源码分析
一、创建TaskScheduler、然后发送注册Application请求SparkContext.scala sparkContext初始化的时候创建TaskSchedule 这里主要分析 TaskScheduler对象如何创建, 如何向Master发送注册Application请求 接着Master收到请求后如何注册的整个过程。step1:sparkCon...原创 2019-03-19 11:44:02 · 375 阅读 · 0 评论 -
Executor源码分析
step1:CoarseGrainedExecutorBackend.scala/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this wor...原创 2019-03-22 23:26:59 · 939 阅读 · 1 评论 -
Task源码分析
step1:Executor.scala/** * 1) 从TaskRunner开始,就是我们的Task运行的工作原理。然后一步步来剖析Task内部的工作原理。 ysj * 2) 执行线程的run方法。 * a) 通过网络传输,将需要的文件、资源、jar包拷贝过来 * b) 将task中的数据反序列化 * c) 执行taks run方...原创 2019-03-23 21:53:24 · 288 阅读 · 0 评论 -
Shuffle源码分析 Shuffle Write 和 Shuffle Read
step1:HashShuffleWriter.scala /** * 将ShuffleMapTask partition中的数据 写入磁盘 * @param records */ override def write(records: Iterator[Product2[K, V]]): Unit = { // 判断是否在map端进行聚合 // ...原创 2019-03-24 17:19:22 · 732 阅读 · 0 评论 -
SparkSQL代码案例
1、创建DataFrame的方式package com.netcloud.bigdata.sparksqlimport java.util.Propertiesimport org.apache.spark.sql.{SaveMode, SparkSession}/** * DataFrame的创建 * 从已经存在的RDD生成,从hive表、或者其他数据源(本地或者HDF...原创 2019-04-03 15:30:20 · 2144 阅读 · 1 评论 -
spark二次排序示例代码
java的代码:自定义keypackage com.netcloud.spark.sparkcore.projectpractice;import scala.math.Ordered;import java.io.Serializable;import java.util.Objects;/** * 自定义的二次排序Key * 1)实现Ordered 、Seriali...原创 2019-03-14 23:00:58 · 186 阅读 · 0 评论 -
共享变量java和scala代码的实现
java代码:package com.netcloud.spark.sparkcore.sharevariable;import org.apache.spark.Accumulator;import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark...原创 2019-03-10 15:18:08 · 364 阅读 · 0 评论 -
行动算子 java和scala示例代码
Java代码package com.netcloud.spark.sparkcore.action;import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaPairRDD;import org.apache.spark.api.java.JavaRDD;import org.apache.spar...原创 2019-03-10 12:32:17 · 205 阅读 · 0 评论 -
scala开发快速入门 | 第一篇 入门
一、scala简介Scala语言是集面向对象和面向函数思想于一体的编程语言。特点:1)它的设计吸收借鉴了多种编程语言的思想,只有很少的特点是scala自己独有的。2)其程序运行在JVM上,并且兼容java程序,Scala可以调用java方法,访问java字段,继承java类,实现java接口。3)在面向对象方面,它是一门纯面向对象的编程语言,也就是说,在Scala中每个值都是对象,每个操作都是方法...原创 2018-06-01 23:16:27 · 7347 阅读 · 0 评论 -
scala开发快速入门 | 第三篇 程序控制结构
预备知识(Range)在执行for循环时,我们经常会用到数值序列,比如,i的值从1循环到5,这时就可以采用Range来实现。Range可以支持创建不同数据类型的数值序列,包括Int、Long、Float、Double、Char、BigInt和BigDecimal等。在创建Range时,需要给出区间的起点和终点以及步长(默认步长为1)。(1)创建一个从1到5的数值序列,包含区间终点5,步...原创 2018-06-02 13:05:37 · 697 阅读 · 0 评论 -
scala开发快速入门 | 第二篇 变量及基本数据类型
一、声明值和变量Scala中有两种类型的变量。一种是val,是不可变的,在声明时就必须被初始化,而且初始化以后就不能再赋值;另一种是var,是可变的,声明的时候需要进行初始化,初始化以后还可以再次对其赋值。Note:在项目的开发中建议使用val 也就是常量。避免数据被随意地更改。val变量scala> val myStr = "Hello World!"myStr: ...原创 2018-06-02 13:07:18 · 1265 阅读 · 0 评论 -
scala开发快速入门 | 第七篇 隐式转换
隐式转换它是scala的一种特殊的功能,它能将一种数据类型转换为另一种数据类型,然后这种数据类型将拥有另一种数据类型的所有方法。可以看成对类的增强。隐式转换分为两种:1)隐式转换函数2)隐式转换值隐式转换的关键字 implicit隐式转换命名方式 one2one /*特殊人群*/class SpecialPerson01(var name: String)/*老人*/class Old...原创 2018-07-08 13:28:00 · 269 阅读 · 0 评论 -
scala开发快速入门 | 第五篇 方法和函数
Scala函数的定义规则1)定义方法的基本格式是:def 方法名称(参数列表):返回值类型 = {方法体}def function1(param1: String, param2: String): String = { "[" + param1 + "]" + ",[" + param2 + "]"}Note: 函数体中如果只有一行语句可以省略 {} 方法可...原创 2018-07-01 23:18:12 · 2033 阅读 · 0 评论 -
scala开发快速入门 | 第六篇 面向对象编程(上)
类的定义、变量的声明初始化、private修饰变量、伴生类伴生对象1)Class 关键字声明一个类Person 2)类成员变量的声明的时候必须初始化 3)val 声明的成员变量 只有get方法 方法名为 变量名() var 声明的成员变量 既有set方法也有get方法 set方法的名称为 变量名_$eq(int x$1) get方法的名称 变量名() ...原创 2018-07-02 23:11:02 · 416 阅读 · 0 评论 -
scala开发快速入门 | 第六篇 面向对象编程(下)
trait简介在scala中并没有提供java语言的interface关键字来定义接口,而是可以使用trait实现多重继承,继承的时候使用extends和with关键字。/*定义三个trait*/trait TraitDemo01 {// 抽象方法定义 def say(content:String):Unit}trait TraitDemo02{ //抽象方法定义 def ...原创 2018-07-08 09:43:48 · 285 阅读 · 0 评论 -
转换算子 java和scala示例代码
Java代码:package com.netcloud.spark.sparkcore.transformation;import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaPairRDD;import org.apache.spark.api.java.JavaRDD;import org.ap...原创 2019-03-10 11:28:51 · 434 阅读 · 0 评论 -
Spark总结02
下面的是对Spark总结01的复习以及详细的讲解一、作业提交的执行流程1)Spark程序写完之后,就要提交到spark集群上面去运行,这就是spark作业(一次代码的运行+一份数据的处理+一次结果的产出)。2) Spark作业是通过spark集群中的多个独立的进程(executor)并行执行的,每个进程处理一部分数据,从而做到分布式并行计算,才能做到对大数据并行处理和计算...原创 2019-04-14 22:52:40 · 246 阅读 · 0 评论