본문 바로가기
Programming

[Apache Spark] Advanced Spark Programming

by Deafhong 2019. 3. 18.
반응형
p.s> 개인적인 공부 및 내용 정리를 위해 파파고 및 구글을 통해 번역을 한 것이므로, 틀린 번역 내용이 있을 수도 있습니다.
이점을 감안하시고, 읽어봐주세요.


Spark에는 두가지 유형의 공유 변수가 있다. - 하나는 Broadcast 변수, 두번째는 accumulators 이다.
  • 브로드캐스트 변수 - 큰 값을 효유렂긍로 배포하는 데 사용.
  • 어큐뮬레이터 - 특정 컬렉션의 정보를 집계하는 데 사용.

Broadcast Variables

방송 변수는 프로그래머가 각 기계에서 캐시된 읽기 전용 변수를 업무와 함께 발송하지 않고 유지할 수 있게 한다. 예를 들어, 그것들은 효율적인 방법으로 모든 노드, 큰 입력 데이터 세트의 사본을 제공하기 위해 사용될 수 있다. 스파크도 효율적인 방송 알고리즘을 이용해 방송 변수를 분산시켜 통신비를 절감하려 한다.
스파크 동작은 일련의 단계를 통해 실행되며, 분산된 "흔들림" 동작으로 구분된다. 스파크는 각 단계 내에서 작업에 필요한 공통 데이터를 자동으로 방송한다.
이런 방식으로 방송되는 데이터는 직렬화된 형태로 캐싱되며 각 작업을 실행하기 전에 deserialize된다. 이는 방송 변수를 명시적으로 생성하는 것은 여러 단계에 걸친 작업이 동일한 데이터를 필요로 하거나 deserialized 형식으로 데이터를 캐싱하는 것이 중요한 경우에만 유용하다는 것을 의미한다.
방송 변수는 SparkContext.broadcast(v)를 호출하여 변수 v에서 생성된다. 방송변수는 v 주변의 래퍼로, value method를 호출하면 그 값에 접근할 수 있다. 아래의 코드는 다음과 같다.

scala> val broadcastVar = sc.broadcast(Array(1, 2, 3))

Output −

broadcastVar: org.apache.spark.broadcast.Broadcast[Array[Int]] = Broadcast(0)

브로드캐스트 변수가 생성된 후에는 클러스터에서 실행되는 모든 기능에서 v 값이 아닌 v를 사용하여 v가 두 번 이상 노드로 전송되지 않도록 해야 한다. 또한 모든 노드가 브로드캐스트 변수의 동일한 값을 얻도록 하기 위해 객체 v를 방송 후에 수정해서는 안 된다.

Accumulators

축적기는 관련 작업을 통해서만 "추가"되는 변수여서 병렬로 효율적으로 지원할 수 있다. 그것들은 카운터나 합계를 실행하는 데 사용될 수 있다. 스파크는 기본적으로 숫자 형식의 축전기를 지원하며 프로그래머는 새로운 형식에 대한 지원을 추가할 수 있다. 이름으로 축전지를 만들면 스파크의 UI에 표시된다. 이것은 실행 단계의 진행 상황을 이해하는데 유용할 수 있다(NOTE - 이것은 아직 파이톤에서 지원되지 않는다).
축전지는 SparkContext.acumulator(v)를 호출하여 초기값 v에서 생성된다. 클러스터에서 실행 중인 작업은 추가 방법 또는 Sc 연산자(Scala 및 Python)를 사용하여 추가할 수 있다. 그러나 그들은 그 가치를 읽을 수 없다. 드라이버 프로그램만이 그 값 방법을 사용해 축전지의 값을 읽을 수 있다.
아래에 주어진 코드는 축열조의 요소를 추가하는 데 사용되는 축열조를 보여준다.

scala> val accum = sc.accumulator(0)
scala> sc.parallelize(Array(1, 2, 3, 4)).foreach(x => accum += x)

위의 코드의 출력을 보려면 다음 명령을 사용하십시오.

scala> accum.value

Output

res2: Int = 10

Numeric RDD Operations ( 숫자 RDD 연산 )

Spark는 미리 정의된 API 방법 중 하나를 사용하여 숫자 데이터에 대해 다른 작업을 할 수 있게 해준다. 스파크의 수치 연산은 모델을 한 번에 한 요소씩 만들 수 있는 스트리밍 알고리즘으로 구현된다.
이러한 조작은 Status() 메소드를 호출하여 StatusCounter 객체로 계산하여 반환한다.
다음은 StatusCounter에서 사용할 수 있는 숫자 방법의 목록이다.
S.No
Methods & Meaning
1
count()
Number of elements in the RDD.
2
Mean()
Average of the elements in the RDD.
3
Sum()
Total value of the elements in the RDD.
4
Max()
Maximum value among all elements in the RDD.
5
Min()
Minimum value among all elements in the RDD.
6
Variance()
Variance of the elements.
7
Stdev()
Standard deviation.
If you want to use only one of these methods, you can call the corresponding method directly on RDD.



반응형

'Programming' 카테고리의 다른 글

[Apache Spark] Deployment  (1) 2019.03.18
[Apache Spark] Core Programming  (0) 2019.03.18
[Apache Spark] Installation  (0) 2019.03.18
[Apache Spark] RDD  (0) 2019.03.18
[Apache Spark] - Home  (0) 2019.03.18