हममें से कई लोगों ने आवश्यकताओं के आधार पर डेटा में बदलाव किए हैं जो बाद में विकसित होते हैं। जब तक हमें इसका एहसास होता है, तब तक पीछे हटना असंभव हो जाता है। परिवर्तन केवल एक स्थिरांक नहीं है; यह डेटा प्रबंधन का एक अनिवार्य हिस्सा है जिसके लिए एक परिष्कृत दृष्टिकोण की आवश्यकता होती है। ड्रेमियो के डेटा कैटलॉग नेस्सी की गिट-जैसी कार्यक्षमता दर्ज करें।
जिस तरह Git सॉफ्टवेयर विकास के लिए मौलिक बन गया है, डेटा इंजीनियरों को समानांतर में काम करने, डेटा संस्करणों की तुलना करने, उत्पादन में बदलाव को बढ़ावा देने और जरूरत पड़ने पर डेटा को वापस लाने के लिए समान टूल की आवश्यकता होती है। नेस्सी डेटा इंजीनियरों को डेटा संस्करणों, शाखाओं, विलयों और कमिटों के प्रबंधन के लिए Git-जैसी संस्करण नियंत्रण प्रणाली प्रदान करता है। यह तब बहुत मददगार हो सकता है जब कई डेटा इंजीनियर एक ही समय में डेटा के साथ काम कर रहे हों और उसे बदल रहे हों। नेस्सी प्रत्येक इंजीनियर को मुख्य शाखा के रूप में सत्य के एकल स्रोत को बनाए रखते हुए अलग-अलग शाखाओं में काम करने की अनुमति देती है। यह कार्यक्षमता डेटा इंजीनियरिंग टीमों को निरंतर परिवर्तन की स्थिति में सहयोगात्मक रूप से डेटा गुणवत्ता बनाए रखने में सशक्त बनाती है।
यह आलेख एक चरण-दर-चरण मार्गदर्शिका प्रदान करता है जो दर्शाता है कि कैसे नेस्सी, ड्रेमियो और मिनिओ आपके डेटा इंजीनियरिंग वर्कफ़्लो में डेटा गुणवत्ता और सहयोग को बढ़ाने के लिए मिलकर काम करते हैं। चाहे आप एक डेटा इंजीनियर, एमएल इंजीनियर, या सिर्फ एक आधुनिक डेटा लेक उत्साही हों, यह ब्लॉग आपको आपके डेटा वर्जनिंग प्रथाओं को प्रभावी ढंग से बढ़ाने के लिए आवश्यक ज्ञान और उपकरणों से लैस करता है।
नेस्सी Git-जैसे वर्कलोड की अनुमति देता है जो आपको परीक्षण करने, विकसित करने और उत्पादन की ओर धकेलने देता है। आइए कुछ प्रमुख अवधारणाओं को तोड़ें:
शाखाएँ: Git की तरह ही, Nessie में शाखाएँ आपको विभिन्न डेटा इंजीनियरिंग कार्यों पर एक साथ काम करने की अनुमति देती हैं। उदाहरण के लिए, आपके पास सुविधा विकास, डेटा सफ़ाई और डेटा परिवर्तन के लिए एक शाखा हो सकती है। प्रत्येक शाखा के पास डेटा परिवर्तनों का अपना सेट हो सकता है।
कमिट्स: नेस्सी में, एक कमिट समय में एक विशिष्ट बिंदु पर डेटा के स्नैपशॉट का प्रतिनिधित्व करता है। जब आप अपने डेटा में परिवर्तन करते हैं, तो आप एक नई प्रतिबद्धता बनाते हैं, जो उन परिवर्तनों को रिकॉर्ड करती है। प्रतिबद्धताएँ एक विशिष्ट शाखा से जुड़ी होती हैं। जब आपको अपने डेटा को स्थिर या ज्ञात-अच्छी स्थिति में वापस लाने की आवश्यकता होती है, तो नेस्सी एक विशिष्ट प्रतिबद्धता का चयन करना और उस डेटा संस्करण पर वापस रोल करना आसान बनाता है। यह डेटा गुणवत्ता और स्थिरता सुनिश्चित करता है।
मर्ज : नेस्सी आपको एक शाखा से दूसरी शाखा में परिवर्तनों को मर्ज करने की अनुमति देता है। यह Git में कोड परिवर्तन को मर्ज करने के समान है। जब आप किसी शाखा का विलय करते हैं, तो उस शाखा में किए गए डेटा परिवर्तन लक्ष्य शाखा का हिस्सा बन जाते हैं।
ड्रेमियो एक वितरित एनालिटिक्स इंजन है जो एक ओपन-सोर्स प्लेटफॉर्म के रूप में काम करता है, जो डेटा अन्वेषण, परिवर्तन और सहयोगात्मक कार्य के लिए एक सहज स्व-सेवा इंटरफ़ेस प्रदान करता है। इसका डिज़ाइन ज़मीन पर आधारित है
हमने पहले ही पता लगा लिया है कि कुबेरनेट्स के साथ ड्रेमियो को कैसे तैनात किया जाए और कैसे किया जाए
मिनिआईओ उच्च प्रदर्शन वाला ऑब्जेक्ट स्टोरेज है। अपनी असाधारणता के लिए प्रसिद्ध
आपको इसकी आवश्यकता होगी
ट्यूटोरियल का यह भाग ड्रेमियो पर आधारित है
शुरू करने के लिए, एक टर्मिनल खोलें और उस फ़ोल्डर पर नेविगेट करें जहां आपने रेपो को क्लोन/डाउनलोड किया था, और ड्रेमियो को शुरू करने के लिए नीचे दिए गए कमांड को चलाएं।
docker-compose up dremio
कुछ क्षण प्रतीक्षा करें और फिर ड्रेमियो तक पहुंचने के लिए http://localhost:9047
पर नेविगेट करें। अनुरोधित फ़ील्ड को अपडेट करें और फिर अगला क्लिक करें।
इसके बाद, MiniIO प्रारंभ करने के लिए निम्न कमांड चलाएँ।
docker-compose up minio
नीचे दिया गया अंतिम docker-compose up
कमांड नेस्सी को प्रारंभ करेगा।
docker-compose up nessie
minioadmin:minioadmin
के उपयोगकर्ता नाम और पासवर्ड के साथ MiniIO में लॉग इन करने के लिए http://localhost:9001
पर नेविगेट करें। आपको एक बाल्टी बनाने के लिए प्रेरित किया जाएगा।
iceberg-datalake
नामक एक बनाएं।
फिर http://localhost:9047
पर ड्रेमियो पर वापस जाएं और स्रोत जोड़ें पर क्लिक करें और नेस्सी का चयन करें।
nessie
पर सेट करेंhttp://nessie:19120/api/v2
पर सेट करेंnone
पर सेट न करें
अभी तक सेव पर क्लिक न करें. इसके बजाय, बाईं ओर नेविगेशन पैनल में, स्टोरेज पर क्लिक करें। MiniIO S3-API संगत ऑब्जेक्ट स्टोरेज है और AWS S3 के समान कनेक्शन पथ का उपयोग कर सकता है।
minioadmin
सेट करेंminioadmin
सेट करें/iceberg-datalake
पर सेट करें
निर्देशों के अगले सेट के लिए नीचे स्क्रॉल करें।
Connection Properties
के अंतर्गत Add Property
बटन पर क्लिक करें।fs.s3a.path.style.access
true
तक पहुंचfs.s3a.endpoint
से minio:9000
dremio.s3.compat
true
परEncrypt connection
अनचेक करें
फिर सेव पर क्लिक करें. अब आपको अपने डेटा स्रोतों में नेस्सी कैटलॉग देखना चाहिए।
ड्रेमियो में बाईं ओर SQL रनर पर नेविगेट करें। सुनिश्चित करें कि टेक्स्ट एडिटर के ऊपरी दाएँ क्षेत्र में Context
हमारे नेस्सी स्रोत पर सेट है। अन्यथा, आपको इस क्वेरी को चलाने के लिए केवल SalesData
के बजाय nessie.SalesData
जैसे संदर्भ का संदर्भ देना होगा। नीचे दिए गए SQL को कॉपी और पेस्ट करें और चलाएँ।
CREATE TABLE SalesData ( id INT, product_name VARCHAR, sales_amount DECIMAL, transaction_date DATE ) PARTITION BY (transaction_date);
आपके द्वारा अभी बनाई गई तालिका में डेटा डालने के लिए नीचे दी गई क्वेरी चलाएँ।
INSERT INTO SalesData (id, product_name, sales_amount, transaction_date) VALUES (1, 'ProductA', 1500.00, '2023-10-15'), (2, 'ProductB', 2000.00, '2023-10-15'), (3, 'ProductA', 1200.00, '2023-10-16'), (4, 'ProductC', 1800.00, '2023-10-16'), (5, 'ProductB', 2200.00, '2023-10-17');
यह देखने के लिए मिनिआईओ पर वापस जाएँ कि आपका डेटा लेक आइसबर्ग तालिकाओं से भर गया है।
http://localhost:9047
पर ड्रेमियो पर लौटें। AT BRANCH
सिंटैक्स का उपयोग करके मुख्य शाखा पर एक तालिका को क्वेरी करके प्रारंभ करें:
SELECT * FROM nessie.SalesData AT BRANCH main;
उत्पादन को प्रभावित किए बिना डेटा के साथ खेलने और उसे बदलने की अनुमति देने के लिए एक ईटीएल (एक्सट्रैक्ट ट्रांसफॉर्म और लोड) शाखा बनाएं।
CREATE BRANCH etl_06092023 in nessie
ईटीएल शाखा के भीतर, तालिका में नया डेटा डालें:
USE BRANCH etl_06092023 in nessie; INSERT INTO nessie.SalesData (id, product_name, sales_amount, transaction_date) VALUES (6, 'ProductC', 1400.00, '2023-10-18');
ईटीएल शाखा के भीतर नए डेटा की तत्काल उपलब्धता की पुष्टि करें:
SELECT * FROM nessie.SalesData AT BRANCH etl_06092023;
मुख्य शाखा पर उपयोगकर्ताओं से परिवर्तनों के अलगाव पर ध्यान दें:
SELECT * FROM nessie.SalesData AT BRANCH main;
ईटीएल शाखा से परिवर्तनों को वापस मुख्य शाखा में मर्ज करें:
MERGE BRANCH etl_06092023 INTO main in nessie;
यह देखने के लिए कि परिवर्तन वास्तव में विलय कर दिए गए हैं, फिर से मुख्य शाखा का चयन करें।
SELECT * FROM nessie.SalesData AT BRANCH main
यह ब्रांचिंग रणनीति डेटा इंजीनियरों को कई तालिकाओं में कई लेनदेन को स्वतंत्र रूप से संभालने में सक्षम बनाती है। जब वे तैयार हो जाते हैं, तो डेटा इंजीनियर इन लेनदेन को मुख्य शाखा के भीतर एक एकल, व्यापक मल्टी-टेबल लेनदेन में विलय कर सकते हैं।
यह ब्लॉग पोस्ट डेटा इंजीनियरिंग में Git-जैसे संस्करण नियंत्रण की शक्ति पर जोर देता है कि कैसे
हमें बताएं कि आपका डेटा लेकहाउस कैसा दिखता है
यहाँ भी दिखाई देता है.