hadoop हाइव में स्टार स्कीमा उत्पन्न करना



hive data-warehouse (1)

मैं एसक्यूएल डाटावायरहाउस दुनिया से हूं जहां से एक फ्लैट फीड से आयाम और तथ्य तालिकाएं उत्पन्न होती हैं I सामान्य डेटा वेयरहाउस परियोजनाओं में हम वास्तव में फ़ीड और आयाम को विभाजित करते हैं। उदाहरण के लिए:

मैं हडोप में पूरी तरह से नया हूँ और मुझे पता चला कि मैं हाइवे में डेटा गोदाम का निर्माण कर सकता हूं। अब, मैं ग्रिड का परिचित हूं जो मुझे लगता है कि हाइव में प्राथमिक कुंजी के रूप में लागू है। इसलिए, नीचे की रणनीति हाइव में वास्तविकता और आयाम को लोड करने का सही तरीका है?

  1. एक हाइव टेबल में स्रोत डेटा लोड करें; कहो Sales_Data_Warehouse
  2. Sales_data_warehouse से आयाम उत्पन्न करें; उदाहरण के लिए:

    SELECT New_Guid (), Customer_Name, Customer_Address से Sales_Data_Warehouse

  3. जब सभी आयाम किए जाते हैं, तो तथ्य तालिका को जैसे लोड करें

    चयन करें New_Guid () के रूप में 'Fact_Key', Customer.Customer_Key, Store.Store_Key ... से Sales_Data_Warehouse के रूप में 'स्रोत' Customer_Dimension में शामिल हों स्रोत पर ग्राहक। ग्राहक = ग्राहक। ग्राहक_नाम और स्रोत। कस्टमर_एडर्रेस = ग्राहक। ग्राहक _एडरर JOIN Store_Dimension के रूप में 'स्टोर' ON स्टोर.स्टोर_नाम = स्रोत.स्टोर_नाम उत्पाद 'के रूप में' उत्पाद 'के रूप में जोड़ना .....

क्या इस तरह से मुझे अपने सच्चे और आयाम तालिका को हाइव में लोड करना चाहिए?

इसके अलावा, सामान्य गोदाम परियोजनाओं में हमें आयाम विशेषताओं को अपडेट करने की ज़रूरत है (उदा: ग्राहक_अड्डर को कुछ और में बदल दिया गया है) या तथ्य तालिका विदेशी कुंजी को अद्यतन करना है (शायद ही कभी, लेकिन ऐसा होता है)। तो, मेरे पास हाइव में INSERT-UPDATE लोड कैसे हो सकता है? (जैसा कि हम एसएसआईएस में लुकअप या टीएसक्यूएल में मर्ज स्टेटमेंट करते हैं)?


हम अभी भी Hadoop और Hive पर आयामी मॉडल का लाभ मिलता है हालांकि, हडोप की कुछ विशेषताएं हमें आयामी मॉडलिंग के लिए मानक दृष्टिकोण को थोड़ा अपनाने की आवश्यकता होती है।

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

जिस तरह से डेटा एचडीएफएस में वितरित किया जाता है, वह डाटा में शामिल होने के लिए महंगा बनाता है। वितरित संबंधपरक डेटाबेस (एमपीपी) में हम क्लस्टर में एक ही नोड पर एक ही प्राथमिक और विदेशी कुंजी के साथ रिकॉर्ड को जोड़ सकते हैं। यह बहुत बड़ी तालिकाओं में जुड़ने के लिए अपेक्षाकृत सस्ते बनाता है सम्मिलित करने के लिए किसी भी डेटा को नेटवर्क में यात्रा करने की आवश्यकता नहीं है यह हडोॉप और एचडीएफएस पर बहुत अलग है एचडीएफएस तालिकाओं पर बड़ी मात्रा में विभाजित किया जाता है और हमारे क्लस्टर पर सभी नोड्स में वितरित किया जाता है। क्लस्टर पर व्यक्तिगत रिकॉर्ड और उनकी चाबियाँ कैसे फैलती हैं, इसका हमारे पास कोई नियंत्रण नहीं है। नतीजतन, दो बड़े टेबलों के लिए हडोप में शामिल हो जाता है क्योंकि डेटा को नेटवर्क भर में जाना पड़ता है। हमें जहां संभव हो वहां शामिल होने से बचना चाहिए एक बड़ी तथ्य और आयाम तालिका के लिए हम सीधे तालिका में सीधे आयाम तालिका को सामान्य कर सकते हैं। दो बहुत बड़ी लेन-देन तालिकाओं के लिए हम माता-पिता तालिका में बच्चे की टेबल के रिकॉर्ड को घोंसले में ले सकते हैं और रन टाइम पर डेटा को समतल कर सकते हैं। हम एक तथ्य तालिका में कई अनाज को संभालने के लिए BigQuery / Postgres आदि में एसआरएल एक्सटेंशन जैसे array_agg का उपयोग कर सकते हैं

मैं किराए की चाबियों की उपयोगिता पर भी सवाल करता हूं क्यों प्राकृतिक कुंजी का उपयोग नहीं? शायद जटिल संयुग्म कुंजी के लिए प्रदर्शन एक मुद्दा हो सकता है लेकिन अन्यथा सरोगेट कुंजी वास्तव में उपयोगी नहीं हैं और मैं उनका उपयोग कभी नहीं करता।





fact