स्पार्क ग्राफएक्स ट्यूटोरियल - अपाचे स्पार्क में ग्राफ एनालिटिक्स

यह ग्राफएक्स ट्यूटोरियल ब्लॉग आपको अपाचे स्पार्क ग्राफएक्स, इसकी विशेषताओं और घटकों से परिचित कराएगा जिसमें एक फ्लाइट डेटा विश्लेषण परियोजना शामिल है।

रेखांकन रेखांकन और ग्राफ-समानांतर गणना के लिए अपाचे स्पार्क का एपीआई है। ग्राफएक्स ईटीएल (एक्सट्रेक्ट, ट्रांसफॉर्म एंड लोड) प्रक्रिया, एक ही सिस्टम के भीतर खोजपूर्ण विश्लेषण और पुनरावृत्ति ग्राफ गणना को एकीकृत करता है। ग्राफ का उपयोग फेसबुक के दोस्तों, लिंक्डइन के कनेक्शन, इंटरनेट के राउटर, आकाशगंगाओं और खगोल भौतिकी के सितारों और Google के मानचित्रों के बीच संबंधों में देखा जा सकता है। भले ही ग्राफ संगणना की अवधारणा बहुत सरल प्रतीत होती है, रेखांकन के अनुप्रयोग शाब्दिक रूप से आपदा का पता लगाने, बैंकिंग, शेयर बाजार, बैंकिंग और भौगोलिक प्रणालियों में उपयोग के मामलों के साथ असीम हैं।इस एपीआई का उपयोग सीखना एक महत्वपूर्ण हिस्सा है इस ब्लॉग के माध्यम से, हम स्पार्क ग्राफएक्स की अवधारणाओं, इसकी विशेषताओं और घटकों को उदाहरणों के माध्यम से जानेंगे और ग्राफएक्स का उपयोग करके फ्लाइट डेटा एनालिटिक्स के पूर्ण उपयोग के मामले से गुजरेंगे।

महाराज और कठपुतली क्या है

हम इस स्पार्क ग्राफक्स ब्लॉग में निम्नलिखित विषयों को शामिल करेंगे:





  1. ग्राफ़ क्या हैं?
  2. ग्राफ संगणना के मामलों का उपयोग करें
  3. स्पार्क ग्राफ्क्स क्या है?
  4. स्पार्क ग्राफएक्स फीचर्स
  5. उदाहरणों के साथ ग्राफएक्स को समझना
  6. केस का उपयोग करें - ग्राफएक्स का उपयोग करके फ्लाइट डेटा विश्लेषण

ग्राफ़ क्या हैं?

ग्राफ़ एक गणितीय संरचना है जो वस्तुओं के एक सेट की राशि होती है जिसमें कुछ जोड़े कुछ अर्थों में संबंधित होते हैं। एक ग्राफ बनाने वाले किनारों और कोने का उपयोग करके इन संबंधों का प्रतिनिधित्व किया जा सकता है। कोने वस्तुओं का प्रतिनिधित्व करते हैं और किनारों उन वस्तुओं के बीच विभिन्न संबंधों को दर्शाते हैं।

ग्राफ अवधारणाओं - स्पार्क ग्राफएक्स ट्यूटोरियल - एडुर्काचित्र: स्पार्क ग्राफएक्स ट्यूटोरियल - रेखांकन, किनारों और रेखांकन में रेखांकन



कंप्यूटर विज्ञान में, एक ग्राफ एक अमूर्त डेटा प्रकार है जो गणित से अप्रत्यक्ष ग्राफ और निर्देशित ग्राफ अवधारणाओं को लागू करने के लिए है, विशेष रूप से ग्राफ सिद्धांत का क्षेत्र। एक ग्राफ डेटा संरचना प्रत्येक किनारे पर कुछ को भी जोड़ सकती है बढ़त मूल्य , जैसे कि एक प्रतीकात्मक लेबल या एक संख्यात्मक विशेषता (लागत, क्षमता, लंबाई,)आदि।)।

ग्राफ संगणना के मामलों का उपयोग करें

निम्नलिखित उपयोग के मामले ग्राफ कम्प्यूटेशन में एक परिप्रेक्ष्य देते हैं और ग्राफ़ का उपयोग करके अन्य समाधानों को लागू करने के लिए आगे की गुंजाइश है।

  1. डिजास्टर डिटेक्शन सिस्टम

    तूफान का उपयोग तूफान, भूकंप, सूनामी, जंगल की आग और ज्वालामुखी जैसी आपदाओं का पता लगाने के लिए किया जा सकता है ताकि लोगों को सतर्क करने के लिए चेतावनी प्रदान की जा सके।



  2. पृष्ठ स्तर पेज रैंक का उपयोग किसी भी नेटवर्क जैसे कागज-प्रशस्ति पत्र नेटवर्क या सोशल मीडिया नेटवर्क में प्रभावितों को खोजने में किया जा सकता है।
  3. वित्तीय धोखाधड़ी का पता लगाना

    ग्राफ विश्लेषण का उपयोग वित्तीय लेनदेन की निगरानी और वित्तीय धोखाधड़ी और धन शोधन में शामिल लोगों का पता लगाने के लिए किया जा सकता है।

  4. व्यापार विश्लेषण

    ग्राफ़, जब मशीन लर्निंग के साथ उपयोग किया जाता है, तो ग्राहक खरीद के रुझान को समझने में मदद करता है। जैसे उबेर, मैकडॉनल्ड्स आदि।

  5. भौगोलिक सूचना प्रणाली

    रेखांकन का गहन उपयोग भौगोलिक सूचना प्रणालियों पर कार्यशीलता विकसित करने के लिए किया जाता है, जैसे वाटरशेड परिसीमन और मौसम की भविष्यवाणी।

  6. Google Pregel

    प्रीगेल एक एपीआई के साथ Google का स्केलेबल और फॉल्ट-टॉलरेंट प्लेटफॉर्म है जो मनमाना ग्राफ व्यक्त करने के लिए पर्याप्त रूप से लचीला हैएल्गोरिदम।

स्पार्क ग्राफ्क्स क्या है?

रेखांकन ग्राफ और ग्राफ-समानांतर गणना के लिए स्पार्क एपीआई है। इसमें ग्राफ़ एनालिटिक्स कार्यों को सरल बनाने के लिए ग्राफ़ एल्गोरिदम और बिल्डरों का एक बढ़ता हुआ संग्रह शामिल है।


ग्राफएक्स स्पार्क आरडीडी को एक रेज़लिएंट डिस्ट्रिब्यूटेड प्रॉपर्टी ग्राफ के साथ बढ़ाता है।
प्रॉपर्टी ग्राफ एक निर्देशित मल्टीग्राफ है जिसमें समानांतर में कई किनारे हो सकते हैं। हर किनारे और वर्टेक्स में उपयोगकर्ता से जुड़े गुण होते हैं। समानांतर किनारों कई अनुमति देते हैंएक ही कोने के बीच संबंध।

स्पार्क ग्राफएक्स फीचर्स

स्पार्क ग्राफएक्स की विशेषताएं निम्नलिखित हैं:

  1. लचीलापन :
    स्पार्क ग्राफएक्स रेखांकन और संगणना दोनों के साथ काम करता है। ग्राफएक्स ईटीएल (एक्सट्रैक्ट, ट्रांसफॉर्म एंड लोड), एक ही सिस्टम के भीतर खोजपूर्ण विश्लेषण और पुनरावृत्ति ग्राफ गणना को एकीकृत करता है। हम उसी डेटा को रेखांकन और संग्रह दोनों के रूप में देख सकते हैं, RDDs के साथ रेखांकन को कुशलतापूर्वक रूपांतरित और जोड़ सकते हैं और Pregel API का उपयोग करके कस्टम पुनरावृत्त ग्राफ़ एल्गोरिदम लिख सकते हैं।
  2. गति :
    स्पार्क ग्राफएक्स सबसे तेजी से विशिष्ट ग्राफ प्रसंस्करण प्रणालियों के लिए तुलनीय प्रदर्शन प्रदान करता है। यह स्पार्क के लचीलेपन, दोष सहिष्णुता और उपयोग में आसानी को बनाए रखते हुए सबसे तेज़ ग्राफ सिस्टम के साथ तुलनीय है।
  3. बढ़ते एल्गोरिथम लाइब्रेरी :
    हम ग्राफ एल्गोरिदम की बढ़ती लाइब्रेरी से चुन सकते हैं जो स्पार्क ग्राफएक्स को पेश करना है। कुछ लोकप्रिय एल्गोरिदम पृष्ठ रैंक, जुड़े घटक, लेबल प्रसार, एसवीडी ++, दृढ़ता से जुड़े घटक और हैंत्रिकोण गणना।

उदाहरणों के साथ ग्राफएक्स को समझना

अब हम एक उदाहरण का उपयोग करके स्पार्क ग्राफक्स की अवधारणाओं को समझेंगे। आइए एक सरल ग्राफ पर विचार करें, जैसा कि नीचे दी गई छवि में दिखाया गया है।

चित्र: स्पार्क ग्राफएक्स ट्यूटोरियल - ग्राफ उदाहरण

ग्राफ को देखते हुए, हम लोगों (कोने) और उनके (किनारों) के संबंधों के बारे में जानकारी निकाल सकते हैं। यहाँ ग्राफ़ ट्विटर उपयोगकर्ताओं का प्रतिनिधित्व करता है और जिन्हें वे ट्विटर पर फॉलो करते हैं। उदा। बॉब ट्विटर पर डेविड और एलिस को फॉलो करता है।

आइए हम अपाचे स्पार्क का उपयोग करके इसे लागू करें। सबसे पहले, हम ग्राफएक्स के लिए आवश्यक कक्षाएं आयात करेंगे।

// आवश्यक कक्षाएं आयात करना org.apache.spark._ आयात org.apache.spark.rdd.RDD आयात org.apache.spark.util.IntParam आयात org.apache.spark.graphx_ आयात org.apache.spark आयात करता है। .graphx.util.GraphGenerators

कार्यक्षेत्र प्रदर्शित करना :इसके अलावा, अब हम उपयोगकर्ताओं के सभी नाम और आयु (कोने) प्रदर्शित करेंगे।

Val vertexRDD: RDD [(Long, (String, Int))] = sc.parbridize (vertexArray) Val edgeRDD: RDD [Edge [Int]] = sc.parallelize (एजट्रेंड) val ग्राफ: ग्राफ [(String, Int) Int] = ग्राफ (vertexRDD, edgeRDD) graph.vertices.filter {केस (आईडी, नाम (उम्र)) => उम्र> 30} .collect.foreach {केस (आईडी, नाम, उम्र) = => println () '$ नाम $ युग है')}

उपरोक्त कोड के लिए आउटपुट निम्नानुसार है:

डेविडहै४२ फ्रांहैपचास ईडीहै५५ चार्लीहै६५

किनारों को प्रदर्शित करना : आइए हम देखें कि ट्विटर पर किस व्यक्ति को कौन पसंद करता है।

के लिए (ट्रिपल<- graph.triplets.collect) { println(s'${triplet.srcAttr._1} likes ${triplet.dstAttr._1}') } 

उपरोक्त कोड के लिए आउटपुट निम्नानुसार है:

बॉबको यह पसंद हैऐलिस बॉबको यह पसंद हैडेविड चार्लीको यह पसंद हैबॉब चार्लीको यह पसंद हैफ्रां डेविडको यह पसंद हैऐलिस ईडीको यह पसंद हैबॉब ईडीको यह पसंद हैचार्ली ईडीको यह पसंद हैफ्रां

अब जब हमने ग्राफएक्स की मूल बातें समझ ली हैं, तो हम थोड़ा और गहरा गोता लगाएँ और उसी पर कुछ उन्नत संगणनाएँ करें।

अनुयायियों की संख्या : हमारे ग्राफ के प्रत्येक उपयोगकर्ता के अनुयायियों की एक अलग संख्या है। आइए हम प्रत्येक उपयोगकर्ता के लिए सभी अनुयायियों को देखें।

// उपयोगकर्ता संपत्ति मामले वर्ग उपयोगकर्ता को अधिक स्पष्ट रूप से मॉडल करने के लिए एक वर्ग को परिभाषित करना (नाम: स्ट्रिंग, आयु: Int, inDeg: Int, outDeg: Int) // एक उपयोगकर्ता ग्राफ़ वैली initialUserGraph बनाना: ग्राफ़ [उपयोगकर्ता, इंट] = ग्राफ़। MapVertices {केस (आईडी, (नाम, उम्र)) => उपयोगकर्ता (नाम, आयु, 0, 0)} // डिग्री जानकारी में भरना val userGraph = initialUserGraph.outerJoinVertices (initialUserGraph.inDegrees) {केस (आईडी, यू) । u.age, u.inDeg, outDegOpt.getOrElse (0))} ((आईडी, प्रॉपर्टी) के लिए}<- userGraph.vertices.collect) { println(s'User $id is called ${property.name} and is liked by ${property.inDeg} people.') } 

उपरोक्त कोड के लिए आउटपुट निम्नानुसार है:

उपयोगकर्ता एककहा जाता हैऐलिसऔर द्वारा पसंद किया जाता हैलोग उपयोगकर्ता कहा जाता हैबॉबऔर द्वारा पसंद किया जाता हैलोग उपयोगकर्ता कहा जाता हैचार्लीऔर द्वारा पसंद किया जाता हैएकलोग उपयोगकर्ता कहा जाता हैडेविडऔर द्वारा पसंद किया जाता हैएकलोग उपयोगकर्ता कहा जाता हैईडीऔर द्वारा पसंद किया जाता हैलोग उपयोगकर्ता कहा जाता हैफ्रांऔर द्वारा पसंद किया जाता हैलोग

सबसे पुराना अनुयायी : हम अनुयायियों को उनकी विशेषताओं के अनुसार क्रमबद्ध भी कर सकते हैं। आइए हम प्रत्येक उपयोगकर्ता के सबसे पुराने अनुयायियों को उम्र के अनुसार खोजें।

// प्रत्येक उपयोगकर्ता वाल के लिए सबसे पुराना अनुयायी ढूंढना OldFollower: VertexRDD [(String, Int)] = userGraph.mapReduceTriplets [(String, Int)] (// प्रत्येक किनारे के लिए स्रोत की विशेषता के साथ गंतव्य शीर्ष पर संदेश भेजें वर्टेक्स एज => Iterator ((edge.dstId, (edge.srcAttr.name, edge.srcAttr.age))), // संदेशों को संयोजित करने के लिए पुराने अनुयायी (a, b) => if (a) के लिए संदेश ले। _2> b._2) ए बी)

उपरोक्त कोड के लिए आउटपुट निम्नानुसार है:

डेविडका सबसे पुराना अनुयायी हैऐलिस चार्लीका सबसे पुराना अनुयायी हैबॉब ईडीका सबसे पुराना अनुयायी हैचार्ली बॉबका सबसे पुराना अनुयायी हैडेविड ईडीकोई अनुयायी नहीं है चार्लीका सबसे पुराना अनुयायी हैफ्रां 

केस का उपयोग करें: स्पार्क ग्राफक्स का उपयोग कर फ्लाइट डेटा विश्लेषण

अब जब हमने स्पार्क ग्राफएक्स की मुख्य अवधारणाओं को समझ लिया है, तो हम ग्राफएक्स का उपयोग करके वास्तविक जीवन की समस्या को हल करें। यह हमें भविष्य में किसी भी स्पार्क परियोजनाओं पर काम करने का विश्वास दिलाने में मदद करेगा।

समस्या का विवरण : स्पार्क ग्राफक्स का उपयोग करके रीयल-टाइम फ्लाइट डेटा का विश्लेषण करने के लिए, रीयल-टाइम कम्प्यूटेशन परिणामों के पास प्रदान करें और Google डेटा स्टूडियो का उपयोग करके परिणामों की कल्पना करें।

केस का उपयोग करें - गणना करने के लिए :

  1. उड़ान मार्गों की कुल संख्या की गणना करें
  2. गणना करें और सबसे लंबे उड़ान मार्गों को सॉर्ट करें
  3. उच्चतम डिग्री शीर्ष के साथ हवाई अड्डे को प्रदर्शित करें
  4. पेजरैंक के अनुसार सबसे महत्वपूर्ण हवाई अड्डों की सूची बनाएं
  5. सबसे कम उड़ान लागत वाले मार्गों की सूची बनाएं

हम उपरोक्त गणनाओं के लिए स्पार्क ग्राफक्स का उपयोग करेंगे और Google डेटा स्टूडियो का उपयोग करके परिणामों की कल्पना करेंगे।

केस का उपयोग करें - डेटासेट :

चित्र: केस का उपयोग करें - यूएसए फ्लाइट डेटासेट

केस - फ्लो डायग्राम का उपयोग करें :

निम्नलिखित उदाहरण स्पष्ट रूप से हमारे फ्लाइट डेटा विश्लेषण में शामिल सभी चरणों की व्याख्या करता है।

चित्र: केस का उपयोग करें - स्पार्क ग्राफएक्स का उपयोग करके फ्लाइट डेटा विश्लेषण के प्रवाह आरेख

केस का उपयोग करें - स्पार्क कार्यान्वयन :

आगे बढ़ते हुए, अब आइए स्पार्क के लिए ग्रहण आईडीई का उपयोग करके अपनी परियोजना को लागू करें।

नीचे छद्म कोड खोजें:

// आवश्यक कक्षाएं आयात करना। org.apache.spark._ ... आयात java.io.File ऑब्जेक्ट एयरपोर्ट {def main (args: Array [String]) {// केस क्लास फ्लाइट केस क्लास फ्लाइट (dofM) बनाना। स्ट्रिंग, dofW: स्ट्रिंग, ..., जिला: इंट) // पार्स इनपुट को पार्स इनपुट को परिभाषित करने के लिए फ्लाइट क्लास डिफ पार्सेफलाइट (str: String) में इनपुट पार्स करने के लिए: फ्लाइट = {वैल लाइन = str.split (',') फ्लाइट (लाइन (0), लाइन (1), ..., लाइन (16) .toInt)} वैल कॉन्फ = नया स्पार्ककॉन्फ़ ()। सेटऐपनाम ('एयरपोर्ट')। सेटमास्टर ('लोकल [2]': वेल sc =। new SparkContext (conf) // डेटा को RDD वैल टेक्स्ट में लोड करें RDD = sc.textFile ('/ home / edureka / usecases / Airport / Airportdataset.csv') 'CSD लाइनों के RDD को फ्लाइट क्लासेस वैल के RDD में पार्स करें। फ्लाइट्स आरडीडी = मैप पार्सफलाइट टू टेक्स्ट आरडीडी // आईडी और नाम वैल एयरपोर्ट्स के साथ एयरपोर्ट आरडीडी बनाएं = मैप फ्लाइट ओरिजिनेट और ओरिजिन एयरपोर्टस्पोर्ट। 1 (1) // एक डिफॉल्ट वर्टेक्स को डिफाइन करना जिसे कहीं नहीं कहा जाता है और एयरपोर्ट आईडी को प्रिंटलैन्स वैल कहीं नहीं = 'कहीं नहीं val AirportMap = मानचित्र फ़ंक्शन का उपयोग करें .collect.toList.toMap // रूट RDD बनाएं sourceID, डेस्टिनेशन और डिस्टल वैल रूट्स = फ्लाइट्स आरडीडी के साथ। मानचित्र फ़ंक्शन का उपयोग करें। डस्टिंचल रूट .ake (2) // सोर्सआईडी, डेस्टिड और डिस्टल वैल किनारों के साथ आरडीडी बनाएं। edge.take (1) // ग्राफ़ को परिभाषित करें और कुछ कोने और किनारों का ग्राफ़ प्रदर्शित करें = ग्राफ़ (एयरपोर्ट, किनारे और कहीं नहीं) graph.vertices.take (2) graph.edges.take (2) // क्वेरी 1 - खोजें हवाई अड्डों की कुल संख्या घाटी संख्या = कार्यक्षेत्र संख्या // क्वेरी 2 - मार्गों की कुल संख्या की गणना करें? Val numroutes = संख्याओं की संख्या // क्वेरी 3 - उन मार्गों की गणना करें जिनकी दूरी 1000 मील से अधिक है। graphges.edges.filter {बढ़त दूरी प्राप्त करें) => दूरी> 1000} .take (3) // इसी प्रकार Scala कोड लिखें। नीचे दिए गए प्रश्न // प्रश्न 4 - सबसे लंबे मार्गों को क्रमबद्ध और प्रिंट करें // क्वेरी 5 - हवाई अड्डों की आने वाली और बाहर जाने वाली उड़ानों के लिए उच्चतम डिग्री कोने प्रदर्शित करें। क्वेरी 6 - आईडी के साथ हवाई अड्डे का नाम प्राप्त करें 10397 और 12478 // क्वेरी 7 - खोजें उच्चतम आने वाली उड़ानों के साथ हवाई अड्डा // क्वेरी 8 - उच्चतम जावक उड़ानों के साथ हवाई अड्डे का पता लगाएं। क्वेरी 9 - पेजरैंक के अनुसार सबसे महत्वपूर्ण हवाई अड्डों का पता लगाएं // क्वेरी 10 - रैंकिंग के आधार पर हवाई अड्डों को क्रमबद्ध करें / क्वेरी 11 - सबसे अधिक प्रदर्शित करें महत्वपूर्ण हवाई अड्डे // क्वेरी 12 - सबसे कम उड़ान की लागत के साथ मार्गों का पता लगाएं // 13 क्वेरी - हवाई अड्डे और उनकी सबसे कम उड़ान लागत का पता लगाएं // क्वेरी 14 - प्रदर्शित हवाई अड्डा कोड के साथ-साथ सबसे कम उड़ान लागतें

केस - विज़ुअलाइज़िंग परिणाम का उपयोग करें :

हम अपने विश्लेषण की कल्पना करने के लिए Google डेटा स्टूडियो का उपयोग करेंगे। Google डेटा स्टूडियो Google Analytics 360 सुइट के तहत एक उत्पाद है। हम यूएसए के मानचित्र पर हवाई अड्डों को मैप करने के लिए जियो मैप सेवा का उपयोग करेंगे और मैट्रिक्स की मात्रा प्रदर्शित करेंगे।

  1. प्रति एयरपोर्ट उड़ानों की कुल संख्या प्रदर्शित करें
  2. प्रत्येक हवाई अड्डे से गंतव्य मार्गों का मीट्रिक योग प्रदर्शित करें
  3. प्रति एयरपोर्ट सभी उड़ानों की कुल देरी प्रदर्शित करें

अब, यह स्पार्क ग्राफएक्स ब्लॉग को समाप्त करता है। मुझे आशा है कि आपने इसे पढ़ने में आनंद लिया और इसे जानकारीपूर्ण पाया। हमारी अपाचे स्पार्क सीरीज़ के अगले ब्लॉग को देखें अपाचे स्पार्क में बाजार तैयार होने के लिए।

हम निम्नलिखित सलाह देते हैं अपाचे स्पार्क प्रशिक्षण | उड़ान डेटा विश्लेषण वीडियो Edureka से शुरू करने के लिए:

अपाचे स्पार्क प्रशिक्षण | स्पार्क ग्राफएक्स फ्लाइट डेटा विश्लेषण | Edureka

क्या आप हमसे कोई प्रश्न पूछना चाहते हैं? कृपया टिप्पणी अनुभाग में इसका उल्लेख करें और हम आपको जल्द से जल्द वापस मिलेंगे।

यदि आप स्पार्क सीखना चाहते हैं और स्पार्क के क्षेत्र में कैरियर बनाना चाहते हैं और वास्तविक जीवन के उपयोग के मामलों के साथ RDD, स्पार्क स्ट्रीमिंग, स्पार्कक्यूएल, एमएललिब, ग्राफएक्स और स्काला का उपयोग करके बड़े पैमाने पर डेटा प्रोसेसिंग करने के लिए विशेषज्ञता का निर्माण करते हैं, तो हमारे इंटरैक्टिव, लाइव की जांच करें -ऑनलाइन यहाँ, यह आपके सीखने की अवधि में मार्गदर्शन करने के लिए 24 * 7 समर्थन के साथ आता है।