आप एक सटीक नमूना चाहते हैं,
a.takeSample(false, 1000)
करने का प्रयास करें लेकिन ध्यान दें कि यह किसी सरणी, न कि किसी RDD
देता है।
क्यों a.sample(false, 0.1)
समान नमूना आकार वापस नहीं करता है: ऐसा इसलिए है क्योंकि स्पार्क आंतरिक रूप से नमूना लेने के लिए Bernoulli sampling नामक किसी चीज़ का उपयोग करता है। fraction
तर्क आरडीडी के वास्तविक आकार के अंश का प्रतिनिधित्व नहीं करता है। यह जनसंख्या में प्रत्येक तत्व की संभावना का प्रतिनिधित्व नमूना के लिए चयनित हो रही है, और विकिपीडिया कहते हैं:
क्योंकि आबादी के प्रत्येक तत्व नमूना के लिए अलग से माना जाता है, नमूने का आकार तय नहीं है बल्कि एक प्रकार है द्विपद वितरण।
और इसका अनिवार्य रूप से मतलब है कि संख्या तय नहीं है।
यदि आप true
पर पहला तर्क सेट करते हैं, तो यह Poisson sampling नामक कुछ का उपयोग करेगा, जिसके परिणामस्वरूप एक गैर-निर्धारिती परिणामी नमूना आकार भी होगा।
अद्यतन
आप sample
विधि के साथ चिपके रहते हैं चाहते हैं, तो आप शायद एक बड़ा संभावना fraction
परम के लिए निर्दिष्ट कर सकते हैं और उसके बाद में के रूप में take
फोन:
a.sample(false, 0.2).take(1000)
यह होना चाहिए, सबसे की समय, लेकिन जरूरी नहीं, परिणामस्वरूप 1000 के नमूना आकार में परिणाम होता है। यदि आपके पास पर्याप्त पर्याप्त आबादी है तो यह काम कर सकता है।
स्रोत
2015-09-29 07:15:25
http://stackoverflow.com/a/26830575/494526 – rebeling