apache-spark                
            공유 변수
        
        
            
    수색…
브로드 캐스트 변수
 브로드 캐스트 변수는 SparkContext.broadcast 메서드로 만들 수있는 읽기 전용 공유 객체입니다. 
val broadcastVariable = sc.broadcast(Array(1, 2, 3))
 value 방법을 사용하여 읽음 : 
val someRDD = sc.parallelize(Array(1, 2, 3, 4))
someRDD.map(
    i => broadcastVariable.value.apply(i % broadcastVariable.value.size)
)
축전지
 Accumulators는 쓰기 전용 변수이며 SparkContext.accumulator 로 만들 수 있습니다. 
val accumulator = sc.accumulator(0, name = "My accumulator") // name is optional
 += 수정 됨 : 
val someRDD = sc.parallelize(Array(1, 2, 3, 4))
someRDD.foreach(element => accumulator += element)
 value 메소드를 사용하여 액세스 : 
accumulator.value // 'value' is now equal to 10
어큐뮬레이터를 사용하는 것은 스파크가 적어도 한번은 변형을 보증했기 때문에 복잡합니다. 어떤 이유로 든 변환을 다시 계산해야하는 경우 해당 변환 중에 누적 기가 업데이트됩니다. 이는 누적 기 값이 작업이 한 번만 실행 된 경우와 다를 수 있음을 의미합니다.
노트 :
- 실행자는 누적 기의 값을 읽을 수 없습니다 . 드라이버 프로그램 만이 값 메서드를 사용하여 누적 기의 값을 읽을 수 있습니다.
- Java / MapReduce의 카운터와 거의 유사합니다. 따라서 누적기를 카운터에 연결하여 쉽게 이해할 수 있습니다.
스칼라의 사용자 정의 누산기
 AccumulatorParam 정의 
import org.apache.spark.AccumulatorParam
object StringAccumulator extends AccumulatorParam[String] {
  def zero(s: String): String = s
  def addInPlace(s1: String, s2: String)=  s1 + s2
}
용도:
val accumulator = sc.accumulator("")(StringAccumulator)
sc.parallelize(Array("a", "b", "c")).foreach(accumulator += _)
파이썬의 사용자 정의 누산기
 AccumulatorParam 정의 : 
from pyspark import AccumulatorParam
class StringAccumulator(AccumulatorParam):
    def zero(self, s):
        return s
    def addInPlace(self, s1, s2):
        return s1 + s2
accumulator = sc.accumulator("", StringAccumulator())
def add(x): 
    global accumulator
    accumulator += x
sc.parallelize(["a", "b", "c"]).foreach(add)
Modified text is an extract of the original Stack Overflow Documentation
        아래 라이선스 CC BY-SA 3.0
        와 제휴하지 않음 Stack Overflow