Swift Big Data के लिए एक अप्रत्याशित लेकिन शक्तिशाली उपकरण क्यों है
\nजब हम बड़े डेटा की प्रोसेसिंग के बारे में बात करते हैं, तो आमतौर पर Python, Scala या Java दिमाग में आते हैं। लेकिन Swift? हाँ, वही भाषा जो iOS ऐप्स और macOS के लिए है? पता चला है, Swift केवल UIKit और SwiftUI के बारे में नहीं है। उच्च प्रदर्शन, सख्त टाइपिंग और मल्टीथ्रेडिंग (Grand Central Dispatch) के मूल समर्थन के कारण, Swift का उपयोग वास्तविक परियोजनाओं में Swift में बड़े डेटा की प्रोसेसिंग के लिए तेजी से किया जा रहा है।
\nApple और IBM जैसी बड़ी कंपनियाँ पहले से ही सर्वर डेवलपमेंट और डेटा विश्लेषण के लिए Swift इकोसिस्टम में निवेश कर रही हैं। और Swift for TensorFlow और SwiftML जैसे फ्रेमवर्क ने साबित कर दिया है कि यह भाषा Data Science कार्यों में Python से प्रतिस्पर्धा कर सकती है। इस लेख में, हम देखेंगे कि Swift Big Data से कैसे निपटता है, और कार्यशील कोड दिखाएंगे।
\n\nSwift बनाम Python: डेटा के साथ काम करने के लिए क्या चुनें?
\nसंक्षिप्त उत्तर: यह कार्य पर निर्भर करता है। लेकिन Swift के पास कुछ तुरुप के पत्ते हैं:
\n- \n
- निष्पादन गति: Swift नेटिव कोड में कंपाइल होता है, जो शुद्ध गणनाओं में Python की तुलना में 10x तक प्रदर्शन लाभ देता है। \n
- मेमोरी सुरक्षा: ARC (Automatic Reference Counting) और ऑप्शनल टाइप्स लीक और क्रैश के जोखिम को कम करते हैं। \n
- समानांतरता: async/await और GCD मल्टी-कोर प्रोसेसर पर लोड को कुशलतापूर्वक वितरित करने की अनुमति देते हैं। \n
- Apple इकोसिस्टम: iPhone से Mac Pro तक उपकरणों पर डेटा प्रोसेसिंग के लिए आदर्श। \n
हालाँकि, Swift में बड़े डेटा की प्रोसेसिंग के लिए Python की तुलना में अभी भी कम तैयार लाइब्रेरी हैं। लेकिन यह कस्टम उच्च-प्रदर्शन समाधान लिखने की क्षमता से पूरा होता है।
\n\nSwift में Big Data के लिए फ्रेमवर्क और लाइब्रेरी
\nकोड लिखने से पहले, आइए टूलसेट से परिचित हों। यहाँ वह है जो आज वास्तव में उपयोग किया जा सकता है:
\n\n1. Swift for TensorFlow (S4TF)
\nहालाँकि परियोजना आधिकारिक तौर पर रोक दी गई है, इसकी विरासत SwiftML और SwiftNumerics के रूप में जीवित है। यदि आपको बड़े डेटा पर मशीन लर्निंग की आवश्यकता है - तो यह आपकी पसंद है।
\n\n2. Dispatch (Grand Central Dispatch)
\nसमानांतर प्रोसेसिंग के लिए अंतर्निहित उपकरण। बड़े ऐरे को चंक्स में विभाजित करने के लिए एकदम सही।
\n\n3. SwiftNIO
\nएसिंक्रोनस इनपुट-आउटपुट के लिए सर्वर लाइब्रेरी। थ्रेड को ब्लॉक किए बिना गीगाबाइट फ़ाइलों को पढ़ने की अनुमति देता है।
\n\n4. TabularData (Apple)
\nसारणीबद्ध डेटा (DataFrame) के साथ काम करने के लिए फ्रेमवर्क। iOS 15 / macOS 12 में दिखाई दिया। ETL कार्यों के लिए उत्कृष्ट।
\n\n5. Core ML और Create ML
\nयदि आपका बड़ा डेटा इमेज या टेक्स्ट है, तो Core ML सीधे डिवाइस पर मॉडल को प्रशिक्षित करने में मदद करेगा।
\n\nव्यावहारिक उदाहरण: 10 मिलियन पंक्तियों वाली CSV फ़ाइल की प्रोसेसिंग
\nकल्पना करें: आपके पास उपयोगकर्ता लॉग वाली एक CSV फ़ाइल है। आपको औसत सत्र अवधि ज्ञात करनी है। Python में इसमें एक मिनट लगेगा। Swift में - सेकंड। आइए कोड लिखें।
\n\nचरण 1. मेमोरी लीक के बिना बड़ी फ़ाइल पढ़ना
\nFileHandle का उपयोग करें और भागों में पढ़ें:
import Foundation\n\nfunc readLargeCSV(filePath: String, chunkSize: Int = 4096) {\n guard let fileHandle = FileHandle(forReadingAtPath: filePath) else {\n print("फ़ाइल खोलने में त्रुटि")\n return\n }\n defer { fileHandle.closeFile() }\n \n var partialLine = ""\n while true {\n let data = fileHandle.readData(ofLength: chunkSize)\n if data.isEmpty { break }\n guard let chunk = String(data: data, encoding: .utf8) else { continue }\n \n let lines = (partialLine + chunk).components(separatedBy: "\\n")\n partialLine = lines.last ?? ""\n \n // प्रत्येक पूर्ण पंक्ति को प्रोसेस करें\n for line in lines.dropLast() {\n processLine(line)\n }\n }\n // अंतिम पंक्ति को न भूलें\n if !