2015-10-22 4 views
7

में लागू फ़ंक्शंस का उपयोग करके मैं वर्तमान में स्पार्कआर संस्करण 1.5.1 का उपयोग करके कुछ फ़ंक्शंस को कार्यान्वित करने की कोशिश कर रहा हूं। मैंने पुराने (संस्करण 1.3) उदाहरण देखे हैं, जहां लोग डेटाफ्रेम पर लागू फ़ंक्शन का उपयोग करते थे, लेकिन ऐसा लगता है कि यह अब सीधे उपलब्ध नहीं है। उदाहरण:स्पार्कआर

x = c(1,2) 
xDF_R = data.frame(x) 
colnames(xDF_R) = c("number") 
xDF_S = createDataFrame(sqlContext,xDF_R) 

अब, मैं जब मैं DataFrame

xDF_S$result = sapply(xDF_S$number, ppois, q=10) 

मैं त्रुटि मिलती है पर एक समान तर्क का उपयोग data.frame वस्तु

xDF_R$result = sapply(xDF_R$number, ppois, q=10) 

पर समारोह sapply उपयोग कर सकते हैं संदेश "as.list.default (X) में त्रुटि: इस एस 4 कक्षा को वेक्टर में घुमाने के लिए कोई विधि नहीं"

क्या मैं इसे किसी तरह से कर सकता हूं?

उत्तर

0

यह user defined functions in Spark 2.0 के साथ संभव है।

wrapper = function(df){ 
+  out = df 
+  out$result = sapply(df$number, ppois, q=10) 
+  return(out) 
+ } 
> xDF_S2 = dapplyCollect(xDF_S, wrapper) 
> identical(xDF_S2, xDF_R) 
[1] TRUE 

नोट आप इस प्रकार का आवरण समारोह की जरूरत है क्योंकि आप सीधे में अतिरिक्त तर्क पारित नहीं हो सकता है, लेकिन है कि भविष्य में बदल सकता है।