栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Scala基础篇一(变量定义,控制台的输入输出,文件写入、文件读取、控制结构、数据结构、编写spark常用函数)

Scala基础篇一(变量定义,控制台的输入输出,文件写入、文件读取、控制结构、数据结构、编写spark常用函数)

Scala变量定义

两种(value和variable):

Val a:int=1   #变量不可变定义,类似于Java的final

Var a:int=1   #变量可变定义,可进行多次赋值

类型推断机制:

(定义变量时,可自动检测数据类型)

Val a=1  得到的是val a:int=1

Scala控制台的输入输出

使用import io.Stdin_包

输入:

var i=readInt() #整数的输入

var f=readFloat #浮点数的输入

var b=readBoolean #布尔类型的输入

var str=readLine("please input your name:")#字符串类型的输入

输出:

Print() #直接输出

Println()#输出后换行

Printf()#直接输出

(注意:输出字符串需要” ”,’ ’会出错)

Scala文件写入

使用import java.io.PrintWriter包

val outputFile = new PrintWriter("test.txt")  #建立写入对象

outputFile.println("Hello World")  #写入并换行

outputFile.print("Spark is good")  

outputFile.close()  #结束写入(注意必须要有此动作才能成功写入,因为写入操作是在内存中进行,若没有结束写入,数据在内存中没有被写入本地文件)

Scala 文件读取

使用scala.io.Source包

import scala.io.Source

Val inputFile = Source.fromFile(“filename”) #定义对象变量

Lines = inputFile.getLines #读取数据,按行读取

For(Line<-Lines)println(Line) #循环输出,输出完变量就会置空

控制结构

1、For循环

for(变量<-表达式){语句块}

看不懂来点例子:

例1:

for(i<-1 to 5)println(i)

例2:

for(i<-1 to 5 if i%2==0)println(i)

例3:(多个生成器)

For(i<-1 to 5; j <-1 to 3)println(i*j)

2、For推导式:

for (变量 <- 表达式) yield {语句块}

来点例子:

例1:

scala> val r = for (i <- Array(1,2,3,4,5) if i%2==0) yield { println(i); i}

2

4

r: Array[Int] = Array(2,4)

Scala数据结构
  1. 数组(Array):

Val myarr = new Array[int/String](3)

Scala可以自动检测数据类型

Val myarr = Array(12,25,33)

  1. 元组(Tuple):

Val tuple = (“bigData”,205,45.0)

索引出元组元素:

Println(tuple._1)#第一个元素,”bigData”

Println(tuple._2)#第二个

Println(tuple._3)#第三个

  1. Range类:

Val r = new Range(1,5,1)

创建一个从1到5的数值序列(不含终点5),步长为1

  1. 映射(Map):

一系列键值对的容器。键是唯一的,但值不一定是唯一的。可以根据键来对值进行快速的检索

例1:

Val myMap = Map(“XM”->”scala”,”xm1”->”scala1”)

Print(myMap(“XM”))  #显示键值对应内容

例2:使用contions判断键值是否存在

Val map1=if(myMap.contions(“x”))myMap(“x”) else 0

若键值不存在就补0.

  1. 迭代器(Iterator):

不是一个容器,而是提供了按顺序访问容器元素的数据结构

两个基本操作,next和hasNext。next可以返回迭代器的下一个元素,hasNext用于检测是否还有下一个元素。类似c中指针的一个东西。

例1:

val iter = Iterator("Hadoop","Spark","Scala")

while (iter.hasNext) {

    println(iter.next())

}

Scala编写spark常用函数

函数表达格式:

def 方法名(参数列表):结果类型={方法体}

def counter(value: Int): Int = { value + 1}

用定义变量的方式定义函数:

val counter: Int => Int = value => value + 1  或

val counter = (value: Int) => value + 1

占位符语法

val add= (a: Int, b:Int) => a+b   //可以简化为如下:

val add = (_:Int) + (_:Int) //等价于(a:Int,b:Int)=>a+b,(‘_’可表示在表达式中只出现一次的变量)

Filter()函数:()跟boolan类型,判断

Array(1,2,3,4,5).filter(_>3)   //返回Array(4,5)

Foreach()函数:跟处理表达式,表示对每个元素遍历操作

List.foreach(i=>println(i))或list.foreach println

Map()函数:跟处理表达式,表示对每个元素遍历操作

books.map(s => s.toUpperCase)#将列表中每个字符串中的每个字母变成大写字母

Flatmap()函数:跟处理表达式,表示对每个容器的每个元素处理后再进行整合成同一个容器

val books =List("Hadoop","Hive","HDFS")

scala> books flatMap (s => s.toList)#toList()函数表示将每个字符串拆解成字符

res58: List[Char] = List(H, a, d, o, o, p, H, i, v, e, H, D, F, S)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/774593.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号