Contents
- spark 사용법
- Spark-shell
- self-contained application
Spark 사용법에 대해 알아보자
Spark-shell 을 이용한 방법과 어플리케이션을 이용한 방법을 알아보자
- 스파크 2.0 이전에는 스파크의 주 프로그래밍 인터페이스가 RDD 였다.
2.0 이후엔 RDD 는 데이터셋으로 데체 되었다
RDD 인터페이스도 여전히 지원되지만, 데이터셋을 사용하길 권장된다.
데이터 셋에 대한 자세한 내용은 나중에 알아보도록 하자
DataSet-
https://spark.apache.org/docs/latest/sql-programming-guide.html
Spark-Shell
스파크의 셸은 API를 배울 수 있는 간단한 방법과 데이터를 대화식으로 분석할 수 있는 강력한 도구를 제공한다.
스칼라 (Java VM에서 실행되므로 기존 Java 라이브러리를 사용하는 좋은 방법) 또는 Python에서 사용할 수 있다.
스파크 디렉터리에서 다음을 실행하여 시작한다

스파크의 primary 추상화는 dataset 이라고 불리는 분산된 항목 모음이다.
dataSet 은 Hadoop InputFormats (ex. HDFS 파일) 에서 생성하거나 다른 데이터셋을 변환해서 생성 할 수 있다.
이 예제는 스파크 소스 디렉터리에 있는 README 파일의 텍스트에서 dataSet을 만드는 예제다

some action 을 호출 해서 dataSet을 direct 하게 가져올 수 있고,
dataSet을 변환해서 새 값을 얻을 수도 있다.

이제 이 데이터셋을 새로운 데이터셋으로 전환해보자
파일 항목의 하위 집합이 있는 새 데이터 집합을 반환하기 위해 필터를 호출한다.

캐시
스파크는 클러스터 전체의 인메모리 캐시로 dataSet 을 저장(pulling)하는 기능도 지원한다.
"핫한 데이터셋"을 쿼리할때나 pageRnk 같은 반복적으로 데이터를 접근할때 아주 유용하다

자체(Self- Contained) 어플리케이션
스파크 API를 사용하여 자체 포함 애플리케이션을 작성하고자 한다고 가정하자.
우리는 스칼라(sbt 포함), 자바(maven 포함), 파이톤(python)에서 간단한 어플리케이션을 거닐 것이다.

impleApp.scala라는 이름의 매우 간단한 스파크 애플리케이션을 스칼라에서 만들었다.
어플리케이션은 scala.App 을 extending 하는 대신 main() 메소드를 정의해야한다
위 프로그램은 'a'가 포함된 라인 수와 'b' 가 포함 된 라인 수만 README 에서 계산함
스파크가 설치된 위치로 YOUR_SPARK_HOME 을 바꿔야한다.
spark-shell 에서는 자체적으로 SparkSession을 초기화 하지만
이 프로그램에서는 프로그램의 part 로 sparkSession 을 초기화 하고있다.
sparkSession 을 구성하기위해 sparkSession.builder 를 호출한다.
그리고 application 이름을 set 하고
마지막으로 getOrCreate() 를 sparkSession instance 를 얻기위해 호출한다.
이 어플리케이션은 Spark API 에 의존하기 때문에 우리는 또한 SBT(build.sbt) 설정 파일을 포함할 것이다.
이 파일은 또한 스파크가 의존하는 리포지토리를 추가한다:

sbt가 제대로 작동하려면 SimpleApp.scala를 레이아웃하고 일반적인 디렉토리 구조에 따라 build.sbt를 구성해야 한다. 우리는 애플리케이션의 코드를 포함하는 JAR 패키지를 생성하고
, spark-submit 스크립트를 사용하여 프로그램을 실행할 수 있다.
아마도 이 build.sbt 를 이용해서 어플리케이션의 jar 를 만들고
spark-submit으로 이 jar를 보낼 수 있게 해주는듯?

'데이터처리 > spark' 카테고리의 다른 글
[Spark definitive guide] - 아파치 스파크란 (0) | 2021.02.02 |
---|---|
Spark - RDD 생성 방법과 동작 과정 (0) | 2020.06.04 |
[Trouble Shooting] spark- Java 버전 dependency (0) | 2020.05.14 |
[reference] spark - RDD programming (0) | 2020.05.11 |
[reference] Spark - 개념 클러스터 모드 (0) | 2020.05.08 |