Data Engineering/Spark

[Linux/Spark] 데이터 분석을 위한 Scala에 대해 알아보자

seoraroong 2024. 8. 22. 00:00

Scala

Scala는 현대적 객체 지향 프로그래밍과 함수형 프로그래밍의 특징을 갖춘 프로그래밍 언어이다.

Scala는 Java Virtual Machine (JVM) 위에서 실행되며, Java와 높은 호환성을 가지고 있다.

 

 

Scala의 주요 특징

- 간결한 표현, 강력한 기능

일관성 있는 operator를 가진다.

"A".equals("B")  //JAVA
"A"=="B"  //Scala

 

합리적인 class equality

-> new class를 선언할 필요 없이 class를 비교할 수 있다.

 

 

- 객체 지향 프로그래밍 (Object Oriented Programming, OOP)

 

  • 클래스와 객체: Scala는 클래스와 객체를 통해 객체지향 프로그래밍을 지원한다.
    • 클래스는 데이터와 메서드를 포함할 수 있으며, 객체는 클래스의 인스턴스이다.
  • 상속과 다형성: Scala는 상속, 다형성, 캡슐화 등의 객체지향 개념을 지원한다.

 

- 함수형 프로그래밍 (Functional Programming, FP)

 

  • 순수 함수: 함수는 부작용이 없는 순수 함수로 정의할 수 있다.
  • 고차 함수: 함수를 다른 함수의 인자로 넘기거나, 함수를 반환하는 함수(고차 함수)를 정의할 수 있다.
  • 불변성: 불변 데이터 구조를 사용하여 상태 변경을 최소화한다. 예를 들어, val로 정의된 변수는 재할당이 불가능하다.

-> side effect가 존재하지 않는다.

 

 

- 타입 추론

Scala는 변수와 함수의 타입을 자동으로 추론한다. 명시적으로 타입을 선언할 필요가 없다.

 

- 패턴 매칭

match 표현식을 사용해 복잡한 데이터 구조를 쉽게 분해하고 조건에 따라 처리할 수 있다.

 

- 인터프리터와 REPL

Scala는 Read-Eval-Print Loop (REPL)을 제공해 코드 조각을 즉시 실행하고 테스트할 수 있다.

프로토타입을 빠르게 만들어 테스트할 수 있으며 디버깅 시 step-by-step으로 작업이 가능하다.

 

- Java와의 높은 호환성

Scala는 JVM 위에서 실행된다. 이는 Hadoop과 호환이 가능하다는 말과 동일하다.

Scala 코드를 compile 하면 Java와 동일하게 .class 파일이 나오게 된다.

Java class를 import 해서 사용할 수 있다.

Scala file, Java file을 혼용해 compile 할 수 있다.

 

- if-else, try-catch 등의 분기문이 모두 expression이다.

-> 수식으로 표현할 수 있다.

분기문을 블럭으로 구분하는 것이 아닌, 분기문 자체를 변수로 받을 수 있다.

바로 변수에 할당 가능하다.

 

 

Scala는 대규모 시스템, 데이터 처리, 웹 개발 등 다양한 분야에서 사용되며, 특히 Apache Spark와 같은 데이터 처리 프레임 워크에서 중요한 역할을 한다.