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와 같은 데이터 처리 프레임 워크에서 중요한 역할을 한다.
'Data Engineering > Spark' 카테고리의 다른 글
[Linux/Spark] 노트북 환경에서 Spark 사용하기 (Jupyterlab) (0) | 2024.08.22 |
---|---|
[Linux/Spark] Apache Spark에 대해 알아보자 (0) | 2024.08.22 |
[Linux/Spark] PySpark를 이용해 쿼리 조회하고 데이터 CRUD 해보자 (0) | 2024.08.22 |
[Linux/Spark] PySpark와 MySQL을 연동해보자 (0) | 2024.08.22 |
[Linux/Spark] Apache Spark를 설치해보자 (0) | 2024.08.22 |