Scala는 2003년 Martin Odersky가 JVM 위에서 동작하는 함수형+객체지향 하이브리드 언어로 설계했다. Apache Spark, Kafka 등 빅데이터 프레임워크의 핵심 언어이며, 강력한 타입 시스템과 함수형 프로그래밍 지원이 특징이다.
기본 문법
scala
// 불변 변수 (val) vs 가변 변수 (var)
val name: String = "Alice" // 불변
var count: Int = 0 // 가변
// 함수
def add(a: Int, b: Int): Int = a + b
val square = (x: Int) => x * x // 람다
// 컬렉션
val nums = List(1, 2, 3, 4, 5)
nums.map(_ * 2) // List(2, 4, 6, 8, 10)
nums.filter(_ % 2 == 0) // List(2, 4)
nums.reduce(_ + _) // 15
scala
sealed trait Shape
case class Circle(radius: Double) extends Shape
case class Rectangle(w: Double, h: Double) extends Shape
def area(shape: Shape): Double = shape match {
case Circle(r) => Math.PI * r * r
case Rectangle(w, h) => w * h
}
println(area(Circle(5))) // 78.5
println(area(Rectangle(3, 4))) // 12.0
Spark에서의 Scala
scala
import org.apache.spark.sql.SparkSession
val spark = SparkSession.builder().appName("example").getOrCreate()
val df = spark.read.csv("data.csv")
df.filter($"age" > 18).groupBy("city").count().show()
관련 개념
참고문헌
- •Odersky et al. Programming in Scala, 5th Ed. (2021)
- •Scala 공식 문서: scala-lang.org