Spark / Scala
文章平均质量分 84
Spark和Scala大数据开发
Modify_QmQ
保持热爱,奔赴山海
展开
-
Spark RDD弹性分布数据集详解
RDD简介RDD是Spark提供的最重要的抽象概念,我们可以将RDD理解为一个分布式存储在集群中的大型数据集合,不同RDD之间可以通过转换操作形成依赖关系实现管道化,从而避免了中间结果的I/O操作,提高数据处理的速度和性能。RDD(Resilient Distributed Dataset),即弹性分布式数据集,是一个容错的、并行的数据结构,可以让用户显式地将数据存储到磁盘和内存中,并且还能控制数据的分区。RDD创建方式方式一:从系统加载数据创建RDDSpark可以从Hadoop支持的任何存储源中原创 2020-05-25 16:50:35 · 1475 阅读 · 0 评论 -
Spark 的DataFrame常用操作之DSL的风格语法
DataFrame提供了一个领域特定语言(DSL)来操作结构化数据。1、查看DataFrame当中的数据查看DataFrame中的内容,通过调用show方法personDF.show2、查看DataFram当中部分字段的数据第一种方式查看name字段数据:查看name字段的数据personDF.select(personDF.col("name")).show第二种方式查看name字段数据:查看name字段的另一种写法personDF.select("name").show第三种方式原创 2020-05-25 16:10:42 · 1627 阅读 · 0 评论 -
Spark SQL 结构化数据文件处理 详解
Spark SQL简介 Spark SQL是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象结构叫做DataFrame的数据模型(即带有Schema信息的RDD),Spark SQL作为分布式SQL查询引擎,让用户可以通过SQL、DataFrames API和Datasets API三种方式实现对结构化数据的处理。Spark SQL主要提供了以下三个功能:Spark SQL可从各种结构化数据源中读取数据,进行数据分析。Spark SQL包含行业标准的JDBC和ODBC连接方式,因此它不原创 2020-05-25 11:58:35 · 4088 阅读 · 1 评论 -
Scala 的 Rational有理数类(函数式对象)
有理数.( rational number)是一种可以表达为比率 n/d 的数字,这里的n和d是数字,其中d不能为零。与浮点数相比较,有理数的优势是小数部分得到了完全表达,没有舍人或估算。构建Rational类每个有理数都表示成一个Rational对象,如下代码所示:class Rational(n: Int, d: Int) { println("Create :" + n + "/" + d )}object Rational { def main(args: Array[Strin原创 2020-05-18 11:14:15 · 1652 阅读 · 1 评论 -
Scala和Java分别实现的WordCount
在使用之前,对Maven进行配置:参考:Java项目管理之Maven下载及安装 和项目环境配置 idea创建项目及配置详解和测试代码之后建立一个data文件夹里面写一个word.txt文件,用于统计。1.使用Scala实现单词统计package WordCountimport org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkContext}object SparkWC { def main(args: Ar原创 2020-05-16 14:53:31 · 675 阅读 · 0 评论 -
Scala报错 java.lang.NoSuchMethodError:scala.collection.immutable.HashSet$.empty()Lscala/collection/
在使用Actor通信模型的时候出现报错,表示Scala的版本冲突。File –> Other Settings –> Default Project Structure –> Global Library将原本的Scala SDK 的版本改成2.10即可,可以看到原先的是2.13很显然自己的电脑不存在2.10这个版本,所以说直接下载就好了:如下图,选择2.10等待下载...原创 2020-05-15 22:16:49 · 1460 阅读 · 0 评论 -
Scala 的通信模型 Actor
Actor Model是用来编写并行计算或分布式系统的高层次抽象(类似java中的Thread)让程序员不必为多线程模式下共享锁而烦恼,被用在Erlang 语言上, 高可用性99.9999999 % 一年只有31ms 宕机Actors将状态和行为封装在一个轻量的进程/线程中,但是不和其他Actors分享状态,每个Actors有自己的世界观,当需要和其他Actors交互时,通过发送事件和消息,发送是异步的,非堵塞的(fire-andforget),发送消息后不必等另外Actors回复,也不必暂停,每个Acto原创 2020-05-15 22:07:50 · 468 阅读 · 2 评论 -
Scala的隐式转换详解
隐式转换是在Scala编译器进行类型匹配时,如果找不到合适的类型,那么隐式转换会让编译器在作用范围内自动推导出来合适的类型。1.隐式值与隐式参数隐式值是指在定义参数时前面加上implicit。隐式参数是指在定义方法时,方法中的部分参数是由implicit修饰【必须使用柯里化的方式,将隐式参数写在后面的括号中】。隐式转换作用就是:当调用方法时,不必手动传入方法中的隐式参数,Scala会自动在作用域范围内寻找隐式值自动传入。隐式值和隐式参数注意:同类型的参数的隐式值只能在作用域内出现一次,同一个作用域原创 2020-05-15 12:28:41 · 1049 阅读 · 0 评论 -
Scala 的 Match Case 模式匹配、偏函数与样式类
1.模式匹配Scala 提供了强大的模式匹配机制,应用也非常广泛。一个模式匹配包含了一系列备选项,每个都开始于关键字 case。每个备选项都包含了一个模式及一到多个表达式。箭头符号 => 隔开了模式和表达式。案例实现1.先在main方法中定义一个元组,并且获取到元组当中的每一个数据val t = (1, 5, "a", true)val res: Iterator[Any] = t.productIterator2.定义一个匹配模式的方法,对不同的值进行匹配:def MatchTe原创 2020-05-11 17:36:32 · 699 阅读 · 0 评论 -
Scala 使用 Trait 接口
Scala Trait(特征) 相当于 Java 的接口,实际上它比接口还功能强大。与接口不同的是,它还可以定义属性和方法的实现。一般情况下Scala的类可以继承多个Trait,从结果来看就是实现了多重继承。Trait(特征) 定义的方式与类类似,但它使用的关键字是 trait。案例实现1.定义trait,不能传递参数trait read{ def read(name:String): Unit ={ println(name +" is reading ...") }}trai原创 2020-05-11 17:02:50 · 504 阅读 · 0 评论 -
Scala 的 Tuple 元组
元组的定义:与列表一样,与列表不同的是元组可以包含不同类型的元素。元组的值是通过将单个的值包含在圆括号中构成的。当定义的元组当中包含不同的数据类型,可看到返回值开始会包含其所对应的数据类型 val tuple1 = new Tuple1(1); val tuple2 = new Tuple2("a", 1); val tuple3 = new Tuple3("a", true, 1);在元组当中最多可以写上22个元组的数据类型。虽然不会报错,但是不是元组类型了。使用._数字原创 2020-05-11 12:12:37 · 549 阅读 · 0 评论 -
Scala当中的Map 映射
map定义:其中当出现同一个key值的时候,后面的值会将前面的值进行覆盖。使用foreach进行遍历 val map =Map[String,Int]("a"->100,"b"->200,("c",300),("c",400))根据key返回value值,使用的是一个get,这个时候乳沟存在对应的值就会返回一个Some类型的值,反之则是一个None,这俩个类型都是Option的子类。最后再.get就会返回对应的基本类型。map.get("a")map.get("aa")map.g原创 2020-05-11 10:58:36 · 723 阅读 · 2 评论 -
Scala 的 Set集合(不可重复)详解
Set定义Set 当中元素是无序的,而且会去重,如下代码所示,定义了一个Setval set =Set[Int](1,2,3,4,4,5)代码运行如下intersect 求交集 val set =Set[Int](1,2,3,4,4,5) val set1 = Set[Int](4,5,6,7,8,9) val res :Set[Int]= set.intersect(set1)效果图如下:diff 求差集val res1 :Set[Int]=set.diff(原创 2020-05-09 21:55:45 · 929 阅读 · 0 评论 -
Scala 中的 List 列表详解
Scala 列表类似于数组,它们所有元素的类型都相同,但是它们也有所不同:列表是不可变的,值一旦被定义了就不能改变,其次列表 具有递归的结构(也就是链接表结构)而数组不是。1. List 列表的声明与遍历 val list = List("hello","changsha") val res =list.+("aaa") print(res)效果图如下:2. List 列表的map、flatMap函数实例:val nameList = List( "hello hun原创 2020-05-09 15:22:52 · 2583 阅读 · 0 评论 -
Scala 中的 Array 数组 详解
Scala 语言中提供的数组是用来存储固定大小的同类型元素,原创 2020-05-07 21:55:02 · 2506 阅读 · 0 评论 -
Scala字符串String详解
string操作方法举例➢ 比较:equals➢ 比较忽略大小写:equalsIgnoreCase➢ indexOf:如果字符串中有传入的assci码对应的值,返回下标object String { def main(args: Array[String]): Unit = { val s="yueyue" val s1="YUEYUE" println(s.e...原创 2020-05-03 11:45:59 · 1303 阅读 · 0 评论 -
Scala的方法定义与函数详解
➢ 方法定义1.普通方法 def sum(a: Int, b: Int): Int = { //return a + b a + b }➢ 注意点方法体的返回值可以省略,会自动推断方法体最后的返回值可以使用return,如果使用了return那么一定要指定返回类型方法体中没有用return。默认将方法体当中最后一行计算的结果当做返回值返回,...原创 2020-05-03 11:36:41 · 1355 阅读 · 3 评论 -
Scala学习笔记(一)基本语法
package com.lzq.bilibili//在Scala当中驼峰命名法,在Scala当中定义的类可以传递参数,有了参数就有了默认的构造,传参一定要指定类型,传递参数的时候会自动getset//在类当中重写构造,构造中第一行需要调用默认构造//在Scala当中,new Person时 出来方法不执行【除了构造方法】其他都执行//在同一个文件当中class名称和Object名称一样时...原创 2020-05-01 12:46:30 · 1093 阅读 · 0 评论 -
Scala的变量声明和数据类型详解
在声明变量时,Scala 允许你决定该变量是不可变(只读)的,还是可变的(读写)。如下所示,不可变的“变量”用 val 关键字声明: val array: Array[String] = new Array(5) Scala 的大部分变量事实上是指向堆内存对象的引用,这一点与 Java 一致。所以,以上代码中的 array 也是一个引用,它不能指向其他 Array,但所指向的 Array 中的...原创 2020-04-29 20:58:21 · 1865 阅读 · 0 评论 -
Scala 语言概述
语言特点及概述Scala 是一门满足现代软件工程师需求的语言;它是一门静态类型语言,支持混合范式;它也是一门运行在 JVM 之上的语言,语法简洁、优雅、灵活。Scala 拥有一套复杂的类型系统,Scala方言既能用于编写简短的解释脚本,也能用于构建大型复杂系统。这些只是它的一部分特性,下面就是其特性:运行在 JVM 和 JavaScript 之上的语言Scala 不仅利用了 JVM 的高性...原创 2020-04-29 16:48:20 · 1446 阅读 · 0 评论 -
Diamond types are not supported at language level ‘6‘报错
在使用idea的时候默认的会发现语言级别为6在这个时候使用泛型的时候,系统会提示:语言级别“6”不支持菱形类型修改方式如下:file --> project Sturcture 修改为8即可...原创 2020-04-27 16:25:07 · 2803 阅读 · 0 评论 -
idea创建项目及配置详解和测试代码
最开始要安装好idea和maven,Maven的安装首先选中file new project 创建一个项目。选中Maven项目,这个时候是没有jdk的,我们紫旭耀添加jdk进去即可:找到本机的jdk地址。给定项目名。下一步选择项目存放路径,finish创建即可同样的在file下打开项目设置:打开后,先看一下jdk是否配置好同理,添加jdk添加Scala sdk,在这...原创 2020-04-27 16:03:38 · 1548 阅读 · 0 评论 -
在Windows下搭建Spark环境
安装jdk配置jdk环境变量参考:单击前往安装Scala及配置在官网当中进行下载:https://www.scala-lang.org/单击download后,可以在最下面看到版本信息:选择Scala的msi版本,单击下载。下载完成后单击运行就会进入到安装界面,一直下一步安装即可。在cmd当中需要看一下输入scala后是否可以进行scala;如果不能进入,大概就是在安装的时候没...原创 2020-04-26 10:00:10 · 1091 阅读 · 0 评论