के साथ स्पार्क नौकरी मैं यूआरएल की सूची से आरडीडी का निर्माण करता हूं, और उसके बाद कुछ एसिंक http कॉल के साथ डेटा लाने की कोशिश करता हूं। मुझे अन्य गणना करने से पहले सभी परिणामों की आवश्यकता है। आदर्श रूप से, मुझे विचारों को स्केल करने के लिए अलग-अलग नोड्स पर http कॉल करने की आवश्यकता है।Async HTTP कॉल
मैं कुछ इस तरह किया:
//init spark
val sparkContext = new SparkContext(conf)
val datas = Seq[String]("url1", "url2")
//create rdd
val rdd = sparkContext.parallelize[String](datas)
//httpCall return Future[String]
val requests = rdd.map((url: String) => httpCall(url))
//await all results (Future.sequence may be better)
val responses = requests.map(r => Await.result(r, 10.seconds))
//print responses
response.collect().foreach((s: String) => println(s))
//stop spark
sparkContext.stop()
इस काम है, लेकिन स्पार्क काम खत्म कभी नहीं!
तो मुझे आश्चर्य है कि क्या है स्पार्क का उपयोग कर भविष्य के साथ काम कर (भविष्य [RDD] या) के लिए सर्वोत्तम प्रथाओं हैं।
मुझे लगता है कि यह उपयोग केस बहुत आम दिखता है, लेकिन अभी तक कोई जवाब नहीं मिला।
सादर
समस्या 'अनुरोध' और 'प्रतिक्रियाओं' के बीच कोई डेटा आंदोलन नहीं होना चाहिए, इसलिए दोनों परिवर्तन एक ही चरण में निष्पादित किए जाने चाहिए, इसलिए एक ही निष्पादक और संदर्भ। – zero323