paint-brush
बाइटवैक्स और वाईडेटा-प्रोफाइलिंग का उपयोग करके वास्तविक समय में अपने डेटा को कैसे समझेंद्वारा@ydata
798 रीडिंग
798 रीडिंग

बाइटवैक्स और वाईडेटा-प्रोफाइलिंग का उपयोग करके वास्तविक समय में अपने डेटा को कैसे समझें

द्वारा YData9m2023/07/25
Read on Terminal Reader

बहुत लंबा; पढ़ने के लिए

डेटा स्ट्रीम पर डेटा प्रोफाइलिंग कैसे करें, इस पर बस एक अद्भुत चरण-दर-चरण ट्यूटोरियल 🚀
featured image - बाइटवैक्स और वाईडेटा-प्रोफाइलिंग का उपयोग करके वास्तविक समय में अपने डेटा को कैसे समझें
YData HackerNoon profile picture

इस ब्लॉग पोस्ट में, हम बताएंगे कि आप अपने स्ट्रीमिंग प्रवाह की गुणवत्ता में सुधार के लिए ओपन-सोर्स स्ट्रीमिंग समाधान, बाइटवैक्स को ydata-profileing के साथ कैसे जोड़ सकते हैं और उसका लाभ उठा सकते हैं। सीट बेल्ट लगा लो!


स्ट्रीम प्रोसेसिंग उड़ान के दौरान और भंडारण से पहले डेटा के वास्तविक समय के विश्लेषण को सक्षम बनाता है और स्टेटफुल या स्टेटलेस हो सकता है।


स्टेटफुल स्ट्रीम प्रोसेसिंग का उपयोग वास्तविक समय की सिफारिशों, पैटर्न का पता लगाने, या जटिल घटना प्रसंस्करण के लिए किया जाता है, जहां प्रसंस्करण के लिए जो कुछ हुआ है उसका इतिहास आवश्यक है (विंडोज़, एक कुंजी द्वारा जुड़ना, आदि)।


स्टेटलेस स्ट्रीम प्रोसेसिंग का उपयोग इनलाइन ट्रांसफ़ॉर्मेशन के लिए किया जाता है जिसके लिए स्ट्रीम में अन्य डेटा बिंदुओं के ज्ञान की आवश्यकता नहीं होती है जैसे किसी ईमेल को मास्क करना या किसी प्रकार को परिवर्तित करना।


अनस्प्लैश पर मार्कस स्पिस्के द्वारा फोटो


कुल मिलाकर, डेटा स्ट्रीम का उद्योग में व्यापक रूप से उपयोग किया जाता है और इसे धोखाधड़ी का पता लगाने , रोगी की निगरानी , या घटना पूर्वानुमानित रखरखाव जैसे मामलों में उपयोग करने के लिए लागू किया जा सकता है।

एक महत्वपूर्ण पहलू जिस पर सभी डेटा स्ट्रीम को विचार करना चाहिए वह है डेटा की गुणवत्ता

पारंपरिक मॉडलों के विपरीत जहां डेटा गुणवत्ता का आकलन आमतौर पर डेटा वेयरहाउस या डैशबोर्ड समाधान के निर्माण के दौरान किया जाता है, स्ट्रीमिंग डेटा को निरंतर निगरानी की आवश्यकता होती है


संग्रहण से लेकर डाउनस्ट्रीम अनुप्रयोगों को फीड करने तक, पूरी प्रक्रिया के दौरान डेटा गुणवत्ता बनाए रखना आवश्यक है। आख़िरकार, ख़राब डेटा गुणवत्ता की कीमत संगठनों के लिए बहुत अधिक हो सकती है:


“खराब डेटा की लागत अधिकांश कंपनियों के राजस्व का आश्चर्यजनक रूप से 15% से 25% है। (...) डेटा गुणवत्ता पर आगे आकर इनमें से दो-तिहाई लागत को समाप्त किया जा सकता है।


- थॉमस सी. रेडमैन, "गेटिंग इन फ्रंट ऑन डेटा क्वालिटी" के लेखक


इस पूरे लेख में, हम आपको दिखाएंगे कि आप प्रोफाइल के लिए bytewa ydata-profiling के साथ कैसे जोड़ सकते हैं और अपने स्ट्रीमिंग प्रवाह की गुणवत्ता में सुधार कर सकते हैं!

बाइटवैक्स के साथ डेटा पेशेवरों के लिए स्ट्रीम प्रोसेसिंग

बाइटवैक्स एक ओएसएस स्ट्रीम प्रोसेसिंग फ्रेमवर्क है जिसे विशेष रूप से पायथन डेवलपर्स के लिए डिज़ाइन किया गया है।


यह उपयोगकर्ताओं को एक अनुकूल और परिचित इंटरफ़ेस और पायथन पारिस्थितिकी तंत्र के साथ 100% अनुकूलता प्रदान करते हुए फ़्लिंक, स्पार्क और काफ्का स्ट्रीम जैसी क्षमताओं के साथ स्ट्रीमिंग डेटा पाइपलाइन और वास्तविक समय एप्लिकेशन बनाने की अनुमति देता है।


बिल्ट-इन का उपयोग करना कनेक्टर्स या मौजूदा पायथन लाइब्रेरीज़, आप वास्तविक समय और स्ट्रीमिंग डेटा स्रोतों (काफ्का, रेडपांडा, वेबसॉकेट, आदि) से जुड़ सकते हैं और रूपांतरित डेटा को विभिन्न डाउनस्ट्रीम सिस्टम (काफ्का, पैराक्वेट फ़ाइलें, डेटा लेक, आदि) में लिख सकते हैं


परिवर्तनों के लिए, बाइटवैक्स मैप , विंडोिंग और एकत्रीकरण विधियों के साथ स्टेटफुल और स्टेटलेस ट्रांसफॉर्मेशन की सुविधा देता है और रिकवरी और स्केलेबिलिटी जैसी परिचित सुविधाओं के साथ आता है।


बाइटवैक्स डेटा स्ट्रीम के लिए पायथन-प्रथम और डेटा-केंद्रित अनुभव की सुविधा प्रदान करता है और इसे विशेष रूप से डेटा इंजीनियरों और डेटा वैज्ञानिकों के लिए बनाया गया है।


यह उपयोगकर्ताओं को स्पार्क या फ्लिंक जैसे जेवीएम-आधारित स्ट्रीमिंग प्लेटफॉर्म को सीखने और बनाए रखने के बिना स्ट्रीमिंग डेटा पाइपलाइन और वास्तविक समय एप्लिकेशन बनाने और उनकी आवश्यकताओं को पूरा करने के लिए आवश्यक अनुकूलन बनाने की अनुमति देता है।


बाइटवैक्स कई उपयोग के मामलों के लिए उपयुक्त है, अर्थात्, जेनरेटिव एआई के लिए एंबेडिंग पाइपलाइन , डेटा स्ट्रीम में गुम मानों को संभालना , वित्तीय बाज़ारों को समझने के लिए स्ट्रीमिंग संदर्भ में भाषा मॉडल का उपयोग करना , और अधिक।


उपयोग के मामले की प्रेरणा और दस्तावेज़ीकरण, ट्यूटोरियल और गाइड जैसी अधिक जानकारी के लिए, बेझिझक जाँच करें बाइटवैक्स वेबसाइट .

डेटा स्ट्रीम के लिए डेटा प्रोफ़ाइलिंग क्यों?

डेटा प्रोफाइलिंग किसी भी मशीन लर्निंग कार्य की सफल शुरुआत की कुंजी है और यह चरण को संदर्भित करता है हमारे डेटा को पूरी तरह से समझना : इसकी संरचना, व्यवहार और गुणवत्ता।


संक्षेप में, डेटा प्रोफाइलिंग इसमें डेटा के प्रारूप और मूल विवरणकों (उदाहरण के लिए, नमूनों की संख्या, सुविधाओं की संख्या/प्रकार, डुप्लिकेट मान) से संबंधित पहलुओं का विश्लेषण करना शामिल है। आंतरिक विशेषताएं (जैसे गुम डेटा या असंतुलित सुविधाओं की उपस्थिति), और अन्य जटिल कारक जो डेटा संग्रह या प्रसंस्करण के दौरान उत्पन्न हो सकते हैं (उदाहरण के लिए, गलत मान या असंगत विशेषताएं)।


उच्च डेटा गुणवत्ता मानकों को सुनिश्चित करना सभी डोमेन और संगठनों के लिए महत्वपूर्ण है, लेकिन विशेष रूप से निरंतर डेटा आउटपुट करने वाले डोमेन के साथ काम करने वाले डोमेन के लिए प्रासंगिक है, जहां परिस्थितियां तेजी से बदल सकती हैं और तत्काल कार्रवाई की आवश्यकता हो सकती है (उदाहरण के लिए, स्वास्थ्य देखभाल निगरानी, स्टॉक मूल्य, वायु गुणवत्ता नीतियां)।


कई डोमेन के लिए, डेटाबेस में संग्रहीत ऐतिहासिक डेटा पर विचार करते हुए, डेटा प्रोफाइलिंग का उपयोग खोजपूर्ण डेटा विश्लेषण लेंस से किया जाता है। इसके विपरीत, डेटा स्ट्रीम के लिए, स्ट्रीम के साथ लगातार सत्यापन और गुणवत्ता नियंत्रण के लिए डेटा प्रोफाइलिंग आवश्यक हो जाती है , जहां डेटा को प्रक्रिया के विभिन्न समय सीमा या चरणों में जांचने की आवश्यकता होती है।


हमारे डेटा प्रवाह में एक स्वचालित प्रोफाइलिंग को एम्बेड करके, हम तुरंत अपने डेटा की वर्तमान स्थिति पर प्रतिक्रिया प्राप्त कर सकते हैं और किसी भी संभावित महत्वपूर्ण मुद्दों के लिए सतर्क रह सकते हैं - चाहे वे डेटा स्थिरता और अखंडता (उदाहरण के लिए, दूषित मूल्य या बदलते प्रारूप) से संबंधित हों, या कम समय में होने वाली घटनाओं (उदाहरण के लिए, डेटा बहाव, व्यावसायिक नियमों और परिणामों से विचलन) से संबंधित हों।


वास्तविक दुनिया के डोमेन में - जहां आप जानते हैं कि मर्फी का नियम लागू होता है और "सबकुछ निश्चित रूप से गलत हो सकता है" - स्वचालित प्रोफाइलिंग हमें कई मस्तिष्क पहेली और सिस्टम को उत्पादन से बाहर करने से बचा सकती है!


डेटा प्रोफाइलिंग के संबंध में, ydata-profiling लगातार एक रही है भीड़ पसंदीदा , या तो के लिए तालिका का या समय श्रृंखला आंकड़े। और कोई आश्चर्य नहीं क्यों - यह विश्लेषण और अंतर्दृष्टि के व्यापक सेट के लिए कोड की एक पंक्ति है।


जटिल और समय बर्बाद करने वाले ऑपरेशन हुड के तहत किए जाते हैं: ydata-प्रोफाइलिंग स्वचालित रूप से डेटा में शामिल फीचर प्रकारों का पता लगाता है, और फीचर प्रकारों (या तो संख्यात्मक या श्रेणीबद्ध) के आधार पर, यह प्रोफाइलिंग रिपोर्ट में दिखाए गए सारांश आंकड़ों और विज़ुअलाइज़ेशन को समायोजित करता है


डेटा-केंद्रित विश्लेषण को बढ़ावा देते हुए, पैकेज सुविधाओं के बीच मौजूदा संबंधों पर भी प्रकाश डालता है , उनके जोड़ीदार इंटरैक्शन और सहसंबंधों पर ध्यान केंद्रित करता है, और डुप्लिकेट या निरंतर मूल्यों से लेकर विषम और असंतुलित सुविधाओं तक डेटा गुणवत्ता अलर्ट का गहन मूल्यांकन प्रदान करता है।


यह वास्तव में हमारे डेटा की गुणवत्ता का 360º दृश्य है - न्यूनतम प्रयास के साथ।


प्रोफाइलिंग रिपोर्ट: संभावित डेटा गुणवत्ता मुद्दों पर प्रकाश डालना।



यह सब एक साथ रखना: बाइटवैक्स और वाईडेटा-प्रोफाइलिंग

प्रोजेक्ट शुरू करने से पहले, हमें पहले अपनी पायथन निर्भरताएँ सेट करनी होंगी और अपने डेटा स्रोत को कॉन्फ़िगर करना होगा।


सबसे पहले, आइए bytewax और ydata-profiling पैकेज इंस्टॉल करें ( आप इसके लिए वर्चुअल वातावरण का उपयोग करना चाह सकते हैं - इन निर्देशों की जाँच करें यदि आपको कुछ अतिरिक्त मार्गदर्शन की आवश्यकता है!)


 pip install bytewax==0.16.2 ydata-profiling==4.3.1


फिर, हम अपलोड करेंगे पर्यावरण सेंसर टेलीमेट्री डेटासेट (लाइसेंस - CC0: पब्लिक डोमेन), जिसमें विभिन्न IoT उपकरणों से तापमान, आर्द्रता, कार्बन मोनोऑक्साइड तरल पेट्रोलियम गैस, धुआं, प्रकाश और गति के कई माप शामिल हैं:


 wget https://raw.githubusercontent.com/bytewax/air-quality-sensor/main/data/iot_telemetry_data_1000


उत्पादन परिवेश में, ये माप प्रत्येक डिवाइस द्वारा लगातार उत्पन्न किए जाएंगे , और इनपुट वैसा ही दिखेगा जैसा हम स्ट्रीमिंग प्लेटफ़ॉर्म में अपेक्षा करते हैं। जैसे काफ्का . इस आलेख में, स्ट्रीमिंग डेटा के साथ हमें जो संदर्भ मिलेगा उसे अनुकरण करने के लिए, हम सीएसवी फ़ाइल से डेटा को एक समय में एक पंक्ति में पढ़ेंगे और बाइटवैक्स का उपयोग करके डेटाफ्लो बनाएंगे।


(एक त्वरित साइड नोट के रूप में, डेटाफ्लो अनिवार्य रूप से एक डेटा पाइपलाइन है जिसे एक निर्देशित एसाइक्लिक ग्राफ - डीएजी के रूप में वर्णित किया जा सकता है)


सबसे पहले, आइए कुछ आवश्यक आयात करें:


 from datetime import datetime, timedelta, timezone from bytewax.dataflow import Dataflow from bytewax.connectors.stdio import StdOutput from bytewax.connectors.files import CSVInput from bytewax.testing import run_main


फिर, हम अपने डेटाफ्लो ऑब्जेक्ट को परिभाषित करते हैं। इसके बाद, हम एक स्टेटलेस मैप विधि का उपयोग करेंगे जहां हम स्ट्रिंग को डेटटाइम ऑब्जेक्ट में बदलने और डेटा को प्रारूप (डिवाइस_आईडी, डेटा) में पुनर्गठित करने के लिए एक फ़ंक्शन पास करते हैं।


मानचित्र विधि प्रत्येक डेटा बिंदु में स्टेटलेस तरीके से परिवर्तन करेगी। हमने अपने डेटा के आकार को संशोधित करने का कारण यह है कि हम अगले चरणों में डेटा को आसानी से सभी डिवाइसों के बजाय प्रत्येक डिवाइस के लिए अलग-अलग प्रोफ़ाइल डेटा में समूहित कर सकते हैं।


 flow = Dataflow() flow.input("simulated_stream", CSVInput("/content/iot_telemetry_data_1000")) # parse timestamp def parse_time(reading_data): reading_data["ts"] = datetime.fromtimestamp(float(reading_data["ts"]), timezone.utc) return reading_data flow.map(parse_time) # remap format to tuple (device_id, reading_data) flow.map(lambda reading_data: (reading_data['device'], reading_data))


अब, हम अपने द्वारा परिभाषित समयावधि में प्रत्येक डिवाइस के लिए डेटा इकट्ठा करने के लिए bytewax की स्टेटफुल क्षमताओं का लाभ उठाएंगे। ydata-profiling समय के साथ डेटा के स्नैपशॉट की अपेक्षा करता है, जो विंडो ऑपरेटर को ऐसा करने के लिए उपयोग करने के लिए सही तरीका बनाता है।


ydata-profiling में, हम किसी विशेष संदर्भ के लिए निर्दिष्ट डेटाफ़्रेम के लिए सारांशित आँकड़े तैयार करने में सक्षम हैं। उदाहरण के लिए, हमारे उदाहरण में, हम प्रत्येक IoT डिवाइस या विशेष समय सीमा का संदर्भ देते हुए डेटा के स्नैपशॉट तैयार कर सकते हैं:


 from bytewax.window import EventClockConfig, TumblingWindow # This is the accumulator function, and outputs a list of readings def acc_values(acc, reading): acc.append(reading) return acc # This function instructs the event clock on how to retrieve the # event's datetime from the input. def get_time(reading): return reading["ts"] # Configure the `fold_window` operator to use the event time. cc = EventClockConfig(get_time, wait_for_system_duration=timedelta(seconds=30)) # And a tumbling window align_to = datetime(2020, 1, 1, tzinfo=timezone.utc) wc = TumblingWindow(align_to=align_to, length=timedelta(hours=1)) flow.fold_window("running_average", cc, wc, list, acc_values) flow.inspect(print)


स्नैपशॉट परिभाषित होने के बाद, ydata-profiling लाभ उठाना उतना ही सरल है जितना कि प्रत्येक डेटाफ़्रेम के लिए ProfileReport कॉल करना, जिसका हम विश्लेषण करना चाहते हैं:


 import pandas as pd from ydata_profiling import ProfileReport def profile(device_id__readings): print(device_id__readings) device_id, readings = device_id__readings start_time = readings[0]['ts'].replace(minute=0, second=0, microsecond=0).strftime('%Y-%m-%d %H:%M:%S') df = pd.DataFrame(readings) profile = ProfileReport( df, tsmode=True, sortby="ts", title=f"Sensor Readings - device: {device_id}" ) profile.to_file(f"Ts_Profile_{device_id}-{start_time}.html") return f"device {device_id} profiled at hour {start_time}" flow.map(profile)


इस उदाहरण में, हम मानचित्र विधि में फ़ंक्शन के भाग के रूप में छवियों को स्थानीय फ़ाइलों में लिख रहे हैं। इन्हें एक मैसेजिंग टूल के माध्यम से रिपोर्ट किया जा सकता है या हम उन्हें भविष्य में किसी रिमोट स्टोरेज में सहेज सकते हैं।


एक बार प्रोफ़ाइल पूरी हो जाने के बाद, डेटाफ़्लो कुछ आउटपुट की अपेक्षा करता है ताकि हम उस डिवाइस को प्रिंट करने के लिए अंतर्निहित StdOutput उपयोग कर सकें जिसे प्रोफ़ाइल किया गया था और जिस समय इसे प्रोफ़ाइल किया गया था वह मानचित्र चरण में प्रोफ़ाइल फ़ंक्शन से बाहर चला गया था:


 flow.output("out", StdOutput())


बाइटवैक्स डेटाफ्लो निष्पादित करने के कई तरीके हैं। इस उदाहरण में, हम एक ही स्थानीय मशीन का उपयोग करते हैं, लेकिन बाइटवैक्स एक से अधिक होस्ट में, कई पायथन प्रक्रियाओं पर भी चल सकता है। डोकर कंटेनर , इसका उपयोग करना कुबेरनेट्स क्लस्टर , और अधिक .


इस लेख में, हम स्थानीय सेटअप जारी रखेंगे, लेकिन हम आपको हमारे सहायक टूल की जांच करने के लिए प्रोत्साहित करते हैं वैक्ससीटीएल जो आपकी पाइपलाइन के उत्पादन में परिवर्तन के लिए तैयार होने के बाद कुबेरनेट्स डेटाफ्लो परिनियोजन का प्रबंधन करता है।


यह मानते हुए कि हम डेटाफ्लो परिभाषा वाली फ़ाइल के समान निर्देशिका में हैं, हम इसका उपयोग करके इसे चला सकते हैं:


 python -m bytewax.run ydata-profiling-streaming:flow


फिर हम डेटा गुणवत्ता को सत्यापित करने, स्कीमा या डेटा प्रारूपों में परिवर्तनों की जांच करने और विभिन्न उपकरणों या समय विंडो के बीच डेटा विशेषताओं की तुलना करने के लिए प्रोफाइलिंग रिपोर्ट का उपयोग कर सकते हैं।


वास्तव में, हम इसका लाभ उठा सकते हैं तुलना रिपोर्ट कार्यक्षमता यह दो डेटा प्रोफाइलों के बीच अंतर को सीधे तरीके से उजागर करता है, जिससे हमारे लिए उन महत्वपूर्ण पैटर्न का पता लगाना आसान हो जाता है जिनकी जांच की जानी चाहिए या जिन मुद्दों पर ध्यान दिया जाना चाहिए:


 snapshot_a_report = ProfileReport(df_a, title="Snapshot A") snapshot_b_report = ProfileReport(df_b, title="Snapshot B") comparison_report =snapshot_a_report(snapshot_b_report) comparison_report.to_file("comparison_report.html")


क्या आप अपनी स्वयं की डेटा स्ट्रीम का अन्वेषण करने के लिए तैयार हैं?

निरंतर तरीके से डेटा गुणवत्ता में समस्याओं की पहचान करने और अलग-अलग समयावधियों में डेटा की स्थिति की तुलना करने के लिए डेटा स्ट्रीम को मान्य करना महत्वपूर्ण है।


स्वास्थ्य देखभाल , ऊर्जा , विनिर्माण और मनोरंजन में संगठनों के लिए - सभी डेटा की निरंतर धाराओं के साथ काम कर रहे हैं - गुणवत्ता मूल्यांकन से लेकर डेटा गोपनीयता तक, डेटा प्रशासन सर्वोत्तम प्रथाओं को स्थापित करने के लिए एक स्वचालित प्रोफ़ाइलिंग महत्वपूर्ण है।


इसके लिए डेटा के स्नैपशॉट के विश्लेषण की आवश्यकता होती है, जैसा कि इस आलेख में दिखाया गया है, bytewax और ydata-profiling के संयोजन से सहज तरीके से प्राप्त किया जा सकता है।


बाइटवैक्स डेटा स्ट्रीम को स्नैपशॉट में संभालने और संरचना करने के लिए आवश्यक सभी प्रक्रियाओं का ख्याल रखता है, जिसे बाद में सारांशित किया जा सकता है और डेटा विशेषताओं की एक व्यापक रिपोर्ट के माध्यम से ydata-प्रोफाइलिंग के साथ तुलना की जा सकती है।


आने वाले डेटा को उचित रूप से संसाधित करने और प्रोफ़ाइल करने में सक्षम होने से डेटा स्कीमा और प्रारूपों में त्रुटियों के सुधार से लेकर वास्तविक दुनिया की गतिविधियों से उत्पन्न होने वाले अतिरिक्त मुद्दों को उजागर करने और कम करने तक, विभिन्न डोमेन में उपयोग के मामलों की एक बड़ी संख्या खुल जाती है, जैसे कि विसंगति का पता लगाना (उदाहरण के लिए, धोखाधड़ी या घुसपैठ / खतरों का पता लगाना), उपकरण की खराबी , और अन्य घटनाएं जो अपेक्षाओं से भटकती हैं (उदाहरण के लिए, डेटा बहाव या व्यावसायिक नियमों के साथ गलत संरेखण)।


अब, आप अपनी डेटा स्ट्रीम की खोज शुरू करने के लिए पूरी तरह तैयार हैं! हमें बताएं कि आपको कौन से अन्य उपयोग के मामले मिलते हैं, और हमेशा की तरह, बेझिझक हमें टिप्पणियों में एक पंक्ति लिखें, या हमें यहां खोजें डेटा-केंद्रित एआई समुदाय आगे के प्रश्नों और सुझावों के लिए! वहाँ मिलते हैं!

स्वीकृतियाँ

यह लेख फैबियाना क्लेमेंटे (सह-संस्थापक और सीडीओ @) द्वारा लिखा गया था YData ) और मिरियम सैंटोस (डेवलपर रिलेशंस@ YData ) -- विकसित होना ydata-प्रोफ़ाइलिंग - और ज़ेंडर मैथेसन (सीईओ और संस्थापक@ बाइटवैक्स ) और ओली मखासोएवा (डेवलपर रिलेशंस@ बायटवैक्स ) -- विकसित होना बाइटवैक्स .


आपको संबंधित दस्तावेज़ों में ओएसएस पैकेजों के बारे में अतिरिक्त जानकारी मिल सकती है: ydata-प्रोफ़ाइलिंग दस्तावेज़ & बाइटवैक्स दस्तावेज़ .


यहाँ भी प्रकाशित किया गया