यह आम तौर पर stdout करने के लिए एक पूरी DataFrame प्रदर्शित करने के लिए उचित नहीं है, क्योंकि आप ड्राइवर के लिए पूरे DataFrame (अपने मूल्यों के सभी) खींचने के लिए (जब तक DataFrame
पहले से ही स्थानीय है, जो आप df.isLocal
के साथ जांच कर सकते हैं) की जरूरत है इसका मतलब है कि ।
जब तक आप समय से पहले नहीं जानते कि आपके डेटासेट का आकार पर्याप्त रूप से छोटा है ताकि ड्राइवर जेवीएम प्रक्रिया में सभी मानों को समायोजित करने के लिए पर्याप्त मेमोरी उपलब्ध हो, तो ऐसा करना सुरक्षित नहीं है। यही कारण है कि डेटाफ्रेम एपीआई show()
डिफ़ॉल्ट रूप से आपको केवल पहली 20 पंक्तियां दिखाती है।
आप df.collect
जो Array[T]
रिटर्न इस्तेमाल कर सकते हैं और उसके बाद प्रत्येक पंक्ति के ऊपर पुनरावृति और इसे प्रिंट:
df.collect.foreach(println)
लेकिन आप सभी df.showString(numRows: Int)
में लागू स्वरूपण खो (कि show()
आंतरिक रूप से उपयोग करता है)।
तो नहीं, मुझे लगता है कि कोई बेहतर तरीका नहीं है।
स्रोत
2015-05-15 18:47:30
'myDataFrame.show (false)' आज़माएं। यकीन नहीं है कि आप क्या देख रहे हैं। – Pramit
इस एसओ पोस्ट में चर्चा के अनुसार RDD.toLocalIterator() का उपयोग करें: http://stackoverflow.com/questions/21698443/spark-best-practice-for-retrieving-big-data-from-rdd-to-local-machine –