设为首页 加入收藏

TOP

大数据学习23:Spark:大数据的计算引擎(Scala开发环境安装)
2019-05-11 01:23:11 】 浏览:140
Tags:数据 学习 Spark: 计算 引擎 Scala 开发 环境 安装

第一部分:Scala编程语言
第二部分:Spark Core内核(最重要的内容)—> 概念RDD:相当于MapReduce
第三部分:Spark SQL:相当于Hive,也支持SQL语句 -----> 底层依赖Spark Core ----> 依赖RDD
第四部分:Spark Streaming:相当于Storm用于流式计算 - ----> 底层依赖Spark Core ----> 依赖RDD
注意:但是Spark Streaming不能做到实时性很高

第一章:Scala基础

一、Scala简介:多范式的编程语言

1、多范式:支持面向对象、支持函数式编程
2、底层依赖JVM

二、安装配置Scala、常用的开发工具

1、安装配置
	版本:2.11.8版本跟Spark的版本一致(spark-2.1.0-bin-hadoop2.7.tgz)
	      scala-2.11.8.zip(Windows)
	      scala-2.11.8.tgz(Linux)
		  
	以windows为例:类似JDK的安装
		(1)解压: C:\Java\scala-2.11.8
		(2)设置SCALA_HOME: C:\Java\scala-2.11.8
		(3)把%SCALA_HOME%/bin加入PATH路径
		(4)执行: scala -version
		
2、常用开发工具
	(1)REPL:命令行
			   退出: :quit
	
	(2)IDEA: 默认没有Scala环境,安装插件SBT(需要联网)
	
	(3)Scala IDE:就是Eclipse

三、Scala的常用数据类型

1、注意:在Scala中,任何数据都是对象。
	举例:数字 1 ----> 是一个对象,就有方法
	scala> 1.toString
	res0: String = 1     ----> 定义了新的变量 res0,类型String
	
2、Scala定义变量的时候,可以不指定变量的类型,Scala会进行类型的自动推导
	举例:下面的语句是一样的
	      var a:Int = 10
		  var b = 10
		  
	如何定义常量? val
	      val c = 10
	
3、数据的类型
	(1)数值类型:复习
		(*)Byte:  8位的有符号   -128~127
		(*)Short:16位的有符号   -32768 ~ 32767
		(*)Int:   32位的有符号
		(*)Long: 64位的有符号
		(*)Float:浮点数
		(*)Double:双精度
	
	(2)字符串:Char、String
		 对于字符串,在Scala中可以进行插值操作
		 val s1 = "hello world"
		 
		 可以在另一个字符串中,引用s1的值
		 "My name is Tom and ${s1}"
	
	(3)Unit类型:相当于Java中的void 类型
			()代表一个函数:没有参数,也没有返回值
	
			scala> val f = ()
			f: Unit = ()
			
			val f = (a:Int)
	
	(4)Nothing类型:一般来说,表示在函数(方法)执行过程中产生了Exception
		举例: 定义函数 def
		       def myfunction = throw new Exception("some exception ....")
			   myfunction: Nothing

四、Scala的函数

1、内置函数:数学运算
	举例:求最大值
	max(1,2)
	
	包: import scala.math._
	https://www.scala-lang.org/files/archive/api/2.11.8/#package
	
	scala> max(1,2)
	res4: Int = 2  ----> 定义了一个新的变量来保存运算的结果
	
	var result:Int = max(1,2)
	var result = max(1,2)

2、自定义函数:def
	
	
3、Scala的条件表达式 if.. else
	//注意:scala中函数的最后一句话,就是函数分返回值
	//不写reture		

五、循环: for、while、do…while

六、Scala函数的参数:求值策略

1、call by value:对函数的实参求值,并且仅求一次
	举例:def test1(x:Int,y:Int):Int = x+x  没有用到y

2、call by name:函数的实参每次在函数体内部被调用的时候,都会进行求值
	举例:def test2(x: => Int,y: =>Int):Int = x+x  没有用到y
	

3、一个复杂点的例子
	x是call by value
	y是call by name
	
   def test3(x:Int,y: =>Int):Int = 1
   
   再定义一个死循环的函数
   def loop():Int = loop
   
   考虑下面的两个调用
   test3(1,loop) ---> 正常
   test3(loop,1) ---> 死循环
   
4、函数的参数:默认参数、代名参数、可变参数

七、lazy值:如果一个变量被lazy修饰了,他的初始化会被推迟到第一次使用的时候

举例1
	scala> var x = 10
	x: Int = 10

	scala> lazy val y = x + 10
	y: Int = <lazy>

	scala> y
	res0: Int = 20	
	
举例2:读文件(存在)
       读文件(不存在)
		scala> val words = scala.io.Source.fromFile("d:\\temp\\a.txt").mkString
		words: String = I love Beijing

		scala> val words1 = scala.io.Source.fromFile("d:\\temp\\b.txt").mkString
		java.io.FileNotFoundException: d:\temp\b.txt (系统找不到指定的文件。)
		  at java.io.FileInputStream.open0(Native Method)
		  at java.io.FileInputStream.open(FileInputStream.java:195)
		  at java.io.FileInputStream.<init>(FileInputStream.java:138)
		  at scala.io.Source$.fromFile(Source.scala:91)
		  at scala.io.Source$.fromFile(Source.scala:76)
		  at scala.io.Source$.fromFile(Source.scala:54)
		  ... 32 elided

		scala> lazy val words1 = scala.io.Source.fromFile("d:\\temp\\b.txt").mkString
		words1: String = <lazy>

		scala> words1
		java.io.FileNotFoundException: d:\temp\b.txt (系统找不到指定的文件。)
		  at java.io.FileInputStream.open0(Native Method)
		  at java.io.FileInputStream.open(FileInputStream.java:195)
		  at java.io.FileInputStream.<init>(FileInputStream.java:138)
		  at scala.io.Source$.fromFile(Source.scala:91)
		  at scala.io.Source$.fromFile(Source.scala:76)
		  at scala.io.Source$.fromFile(Source.scala:54)
		  at .words1$lzycompute(<console>:11)
		  at .words1(<console>:11)
		  ... 32 elided

		scala>

八、异常:Exception

补充:复习:异常处理的机制 ----> 向上处理异常机制

九、数组、映射、元组

1、数组:定长数组  Array
         变长数组  ArrayBuffer
		 
2、映射Map、元组Tuple
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Spark系列之:Spark SQL(2) 下一篇        ..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目