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
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