खोज…


परिचय

इस विषय में स्पार्क उपयोगकर्ता स्पार्क एसक्यूएल के विभिन्न विन्यास पा सकते हैं, जो अपाचे स्पार्क फ्रेमवर्क का सबसे अधिक इस्तेमाल किया जाने वाला घटक है।

स्पार्क एसक्यूएल शफल विभाजन को नियंत्रित करना

अपाचे स्पार्क में, शफ़ल ऑपरेशन्स जैसे कि join और cogroup करते समय बहुत सारा डेटा पूरे नेटवर्क में ट्रांसफर हो जाता है। अब, विभाजन की संख्या को नियंत्रित करने के लिए जिस पर फेरबदल होता है उसे स्पार्क एसक्यूएल में दिए गए कॉन्फ़िगरेशन द्वारा नियंत्रित किया जा सकता है। वह विन्यास इस प्रकार है:

spark.sql.shuffle.partitions

इस कॉन्फ़िगरेशन का उपयोग करके हम फेरबदल कार्यों के विभाजन की संख्या को नियंत्रित कर सकते हैं। डिफ़ॉल्ट रूप से, इसका मूल्य 200 । लेकिन, 200 विभाजन का कोई मतलब नहीं है अगर हमारे पास कुछ जीबी (एस) की फाइलें हैं। इसलिए, हमें उन्हें स्पार्क एसक्यूएल के माध्यम से संसाधित किए जाने वाले डेटा की मात्रा के अनुसार बदलना चाहिए। इस प्रकार है:

इस परिदृश्य में हमारे पास employee और department शामिल होने के लिए दो टेबल हैं। दोनों तालिकाओं में केवल कुछ रिकॉर्ड होते हैं, लेकिन हमें प्रत्येक कर्मचारी के विभाग को जानने के लिए उनसे जुड़ने की आवश्यकता है। तो, हम उन्हें स्पार्क डेटाफ्रैम का उपयोग करके इस तरह से जोड़ते हैं:

val conf = new SparkConf().setAppName("sample").setMaster("local")
val sc = new SparkContext(conf)

val employee = sc.parallelize(List("Bob", "Alice")).toDF("name")
val department = sc.parallelize(List(("Bob", "Accounts"), ("Alice", "Sales"))).toDF("name", "department")

employeeDF.join(departmentDF, "employeeName").show()

अब, जुड़ने के दौरान बनने वाले विभाजन की संख्या डिफ़ॉल्ट रूप से 200 होती है जो इस डेटा की अधिक मात्रा के लिए निश्चित रूप से बहुत अधिक है।

तो, इस मान को बदलने देता है ताकि हम फेरबदल की संख्या को कम कर सकें।

val conf = new SparkConf().setAppName("sample").setMaster("local").set("spark.sql.shuffle.partitions", 2)
val sc = new SparkContext(conf)

val employee = sc.parallelize(List("Bob", "Alice")).toDF("name")
val department = sc.parallelize(List(("Bob", "Accounts"), ("Alice", "Sales"))).toDF("name", "department")

employeeDF.join(departmentDF, "employeeName").show()

अब, फेरबदल विभाजन की संख्या केवल 2 करने के लिए कम कर रहे हैं, जो केवल फेरबदल आपरेशन की संख्या को कम नहीं होगा, लेकिन यह भी समय से DataFrames में शामिल होने के लिए ले जाया को कम 0.878505 s को 0.077847 s

इसलिए, हमेशा संसाधित किए जा रहे डेटा के अनुसार फेरबदल संचालन के लिए विभाजन की संख्या को कॉन्फ़िगर करें।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow