-
머신런닝 워크북을 보고 공부한 내용
책에 친절하게 스칼라 단기 속성 코스가 있다. 빠르게 읽어보자
우선 그전에 스칼라는 왜 공부하느냐 하면 스파크는 jvm 언어인 스칼라로 작성되기때문이다.
스칼라는 예전에 설치했다.
$ cd /usr/local/src
$ wget http://www.scala-lang.org/files/archive/scala-2.11.8.tgz
$ mkdir /usr/local/src/scala
$ tar xvf scala-2.11.8.tgz -C /usr/local/src/scala/
$ nano ~/.bashrc
bashrc 파일에 아래와 같이 경로 추가
export SCALA_HOME=/usr/local/src/scala/scala-2.11.8
export PATH=$SCALA_HOME/bin:$PATH
$ source ~/.bashrc
책의 실습 내용을 따라해보자.1.패키지를 가져오는 방식에는 자바와의 차이점은 *대신 _를 쓴다는 것이다.
scala> import java.util._
import java.util._
2.데이터 타입에는 자바와의 차이점은 기본 데이터 타입을 지원하지 않고 모든 타입들이 클래스라는 것이다.
scala> 1000.toString
res6: String = 1000
scala> res6
res7: String = 1000
scala> 1000.toInt
res8: Int = 1000
3.클래스는 자바와 별차이 없다 여기서 var는 val,var둘중에 아무거나 써도 되는데 상수와 변수를 선언할 때 사용한다.클래스 기본생성자는 public이다 반드시 모든 변수는 스칼라 코드에서 초기화되어야한다.scala> class myClass{
| var myval = 0
| }
defined class myClass
scala> val newC=new myClass
newC: myClass = myClass@36cda2c2
scala> newC.myval=32
newC.myval: Int = 32
scala> println(newC.myval)
32
메서드도 선언해줄수 있고 :Int 이런식으로 반환값을 지정해줄 수 있다. 자바와의 차이점은 정적메서드가 없다는 것이다.
scala> def myMethod():Int={
| return 3
| }
scala> myMethod() #전달할 인자가 없다면 ()는 생략해도 좋다.
res13: Int = 3
당연히 클래스 내부에도 선언해줄 수 있으며 호출할때는 .을 이용하여 호출할 수 있다.scala> class myC{
| def myM():Int={
| return 3
| }
| }
defined class myC
scala> myC.myMres4: Int = 34.흐름제어는 더 쉽게 할 수잇다. (while,if문은 자바와 동일)
scala> for(i <- 1 until 10)
| println(i)
1
2
3
4
5
6
7
8
9
scala> for(i <- 1 to 10)
| println(i)
1
2
3
4
5
6
7
8
9
10
파일에 대해서 포문을 적용할 수도 있으며, 이때 필터를 적용하여 출력할 수도 있다.
val filesInDir = (new java.io.File("/home/user/").listFiles
for(thisFile<-filesInDir)
println(thisFile)
val fileshere = (new java.io.File("/home/jason/").listFiles)
for(file<-fileshere if file.getName.endWith(".xml")) print(file)
'2017년 > Spark' 카테고리의 다른 글
spark sql (0) 2017.10.18 HDFS와 YARN (0) 2017.10.11 spakrR과 R의 메모리 (0) 2017.09.12 sparkR 이제 좀 써보자.. (0) 2017.08.28 sparkR을 또 공부해보자 (0) 2017.08.18