स्पार्क डीस्ट्रीम में mapPartition
एपीआई है, जबकि फ्लिंक DataStream
एपीआई नहीं है। क्या कोई ऐसा व्यक्ति है जो कारण की व्याख्या करने में मदद कर सकता है। मैं क्या करना चाहता हूं फ्लिंक पर स्पार्क reduceByKey
के समान एपीआई को कार्यान्वित करना है।अपाचे फ्लिंक डेटास्ट्रीम एपीआई में नक्शा नहीं है पार्टिशन रूपांतरण
उत्तर
फ्लिंक स्ट्रीम स्ट्रीमिंग मॉडल स्पार्क स्ट्रीमिंग से काफी अलग है जो मिनी बैचों के आसपास केंद्रित है। स्पार्क स्ट्रीमिंग में प्रत्येक मिनी बैच को डेटा के सीमित सेट पर नियमित बैच प्रोग्राम की तरह निष्पादित किया जाता है, जबकि फ्लिंक डेटास्ट्रीम प्रोग्राम लगातार रिकॉर्ड को संसाधित करते हैं।
फ्लिंक के डेटासेट एपीआई में, MapPartitionFunction
में दो पैरामीटर हैं। फ़ंक्शन के परिणामस्वरूप इनपुट और कलेक्टर के लिए एक पुनरावर्तक। एक फ्लिंक डेटास्ट्रीम प्रोग्राम में MapPartitionFunction
कभी भी पहले फ़ंक्शन कॉल से वापस नहीं आएगा, क्योंकि इटरेटर रिकॉर्ड की एक अंतहीन धारा को फिर से चालू करेगा। हालांकि, फ्लिंक के आंतरिक स्ट्रीम प्रोसेसिंग मॉडल की आवश्यकता है कि उपयोगकर्ता फ़ंक्शन चेकपॉइंट फ़ंक्शन स्थिति के लिए वापस आएं। इसलिए, डेटास्ट्रीम एपीआई mapPartition
परिवर्तन प्रदान नहीं करता है।
स्पार्क स्ट्रीमिंग के reduceByKey
जैसी कार्यक्षमता को कार्यान्वित करने के लिए, आपको स्ट्रीम पर एक कीड विंडो को परिभाषित करने की आवश्यकता है। विंडोज धाराओं को विघटित करता है जो कुछ छोटे बैचों के समान होता है लेकिन खिड़कियां अधिक लचीलापन प्रदान करती हैं। चूंकि खिड़की सीमित आकार का है, इसलिए आप विंडो को reduce
पर कॉल कर सकते हैं।
यह दिखाई दे सकता है जैसे:
yourStream.keyBy("myKey") // organize stream by key "myKey"
.timeWindow(Time.seconds(5)) // build 5 sec tumbling windows
.reduce(new YourReduceFunction); // apply a reduce function on each window
DataStream documentation दिखाता है कि कैसे विभिन्न खिड़की प्रकार को परिभाषित करने के लिए और सभी उपलब्ध कार्यों बताते हैं।
नोट: डाटास्ट्रीम एपीआई को हाल ही में फिर से काम किया गया है। उदाहरण नवीनतम संस्करण (0.10-SNAPSHOT) मानता है जिसे अगले दिनों में 0.10.0 के रूप में रिलीज़ किया जाएगा।
अपने इनपुट धारा मान लिया जाये कि एक विभाजन डेटा है (स्ट्रिंग कहना)
val new_number_of_partitions = 4
//below line partitions your data, you can broadcast data to all partitions
val step1stream = yourStream.rescale.setParallelism(new_number_of_partitions)
//flexibility for mapping
val step2stream = step1stream.map(new RichMapFunction[String, (String, Int)]{
// var local_val_to_different_part : Type = null
var myTaskId : Int = null
//below function is executed once for each mapper function (one mapper per partition)
override def open(config: Configuration): Unit = {
myTaskId = getRuntimeContext.getIndexOfThisSubtask
//do whatever initialization you want to do. read from data sources..
}
def map(value: String): (String, Int) = {
(value, myTasKId)
}
})
val step3stream = step2stream.keyBy(0).countWindow(new_number_of_partitions).sum(1).print
//Instead of sum(1), you can use .reduce((x,y)=>(x._1,x._2+y._2))
//.countWindow will first wait for a certain number of records for perticular key
// and then apply the function
Flink स्ट्रीमिंग का शुद्ध स्ट्रीमिंग (नहीं batched एक) है। Iterate एपीआई पर एक नज़र डालें।
- 1. काफ्का -> डेटास्ट्रीम फ्लिंक करें -> मोंगोडीबी
- 2. अपाचे फ्लिंक में वैश्विक सॉर्टिंग
- 3. स्पार्क नक्शा पार्टिशन बनाम क्षणिक आलसी मूल्य
- 4. अपाचे फ्लिंक बनाम ट्विटर हेरॉन?
- 5. हेज़ेलकास्ट जेट और अपाचे फ्लिंक
- 6. अपाचे फ्लिंक इटरेशन कैसे कार्यान्वित करता है?
- 7. अपाचे फ्लिंक में समांतरता की डिग्री
- 8. अपाचे स्पार्क और अपाचे फ्लिंक के बीच क्या अंतर है?
- 9. अपाचे फ्लिंक नौकरियां चलाने पर लिंकेज विफलता
- 10. गूगल मानचित्र एपीआई नक्शा
- 11. एंड्रॉइड - नक्शा एपीआई v2
- 12. चेक यदि कोई नक्शा अपाचे वेग में रिक्त है
- 13. अपाचे फ्लिंक स्नैपशॉट कलाकृतियों को कैसे आयात करें?
- 14. कौन सा नक्शा एपीआई सबसे शक्तिशाली है?
- 15. फ्लिंक और प्ले 2.5
- 16. क्यों स्कैला में कोई नक्शा नहीं है?
- 17. अपाचे पीओआई एपीआई
- 18. अपाचे एवरो: नक्शा CharSequence का उपयोग करता है कुंजी
- 19. अपाचे फ्लिंक में डेटाबेस से रिकॉर्ड की स्थिति को कैसे देखें और अपडेट करें?
- 20. फ्लिंक और तूफान के बीच मुख्य अंतर क्या है?
- 21. रूपांतरण काम नहीं करता है
- 22. फ्लिंक 1.4 AvroUtils त्रुटि
- 23. अपाचे फ्लिंक का जॉइन फ़ंक्शन और CoGroupFunction कैसे भिन्न होता है?
- 24. Google मानचित्र एपीआई v3 नक्शा लोड
- 25. org.apache.http.entity.ContentType अब अपाचे में नहीं है?
- 26. अपाचे पीओआई: SXSSFWorkbook.dispose() मौजूद नहीं है
- 27. नक्शा() जावास्क्रिप्ट सिंक्रोनस में है?
- 28. osmdroid नक्शा दिखाई नहीं दे रहा है
- 29. क्यों क्वेरी नहीं है चयनकर्ता ('# id') document.getElementById ('id') पर नक्शा?
- 30. एनजी-नक्शा HTML में आंशिक नक्शा
ऐसा लगता है कि आपके द्वारा प्रदान की गई 'कमबीकी' का समाधान 'कमीबीकी' के अलावा स्पार्क में 'ग्रुपबीकी' जैसा ही है। https://databricks.gitbooks.io/databricks-spark-knowledge-base/content/best_practices/prefer_reducebykey_over_groupbykey.html –
नहीं, फ्लिंक की 'कम करें() 'स्पार्क की' कमबीकी 'की तरह लागू होती है जो एक समूह पर एक जोड़ी-कम कार्य को कम करती है। हालांकि समूह परिभाषा थोड़ा अलग है, क्योंकि फ्लिंक मिनी बैचों में विंडो और स्पार्क कुंजी-मूल्य जोड़े का उपयोग करता है। फ्लिंक में स्पार्क के 'ग्रुपबीकी' के लिए कोई प्रत्यक्ष समतुल्य नहीं है, क्योंकि इसका तात्पर्य है कि पूर्ण समूह को स्मृति में भौतिक रूप से पूरा करने की आवश्यकता है, जिससे आउटऑफमेमरी एरर्स का कारण बन सकता है और जेवीएम को मार सकता है। फ्लिंक स्ट्रीम किए गए इटरेटर का उपभोग करने के लिए 'groupReduce()' प्रदान करता है। –
मुझे लगता है कि फ्लिंक की कमी() संयोजन को लागू करती है। क्या ऐसा ही कारण है कि Flink DataStream में समूह विभाजन को MapPartition के रूप में कम नहीं किया गया है? –