दिलचस्प पोस्ट
Rails पर रूबी में has_many आइटम की संख्या को मान्य करें आईपैड चित्र और लैंडस्केप मोड के लिए आकार देने वर्ग Fgets () के साथ stdin से कैसे पढ़ा जाए? सामग्री के आधार पर एक आइफ्रेम का आकार बदलना सीएसएस और jQuery का इस्तेमाल करते हुए इंस्टाग्राम के आईफोन ऐप की तरह, "पुश करने" के लिए चिपचिपा शीर्षक प्राप्त करना जावास्क्रिप्ट में सर्वश्रेष्ठ प्रदर्शन के साथ "लेवेनशैटेन दूरी" द्वारा एक सरणी क्रमित करें AngularJS में ngInclude निर्देश के लिए मॉडल को कैसे निर्दिष्ट करें? गतिशील रूप से JavaScript का उपयोग करके शैली-वेबकिट-ट्रांसफॉर्म को सेट कैसे करें? केंद्र फ़ॉर्म HTML / CSS सबमिट करें MySQL में `REPLACE` और` INSERT … डुप्लिकेट कुंजी अद्यतन पर 'के बीच व्यावहारिक अंतर क्या है? क्लोनिंग जेपीए इकाई Android UiThread (UI थ्रेड) क्या है यह प्रोग्राम क्रैश क्यों होता है: std :: string के बीच DLL के पास कैसे JSF में नेविगेट करने के लिए? यूआरएल कैसे करें वर्तमान पेज को प्रतिबिंबित करें (और पिछला नहीं) एक इंम एक इंटरफेस क्यों लागू होगा?

छत्ता आंतरिक तालिकाओं और बाहरी तालिकाओं के बीच अंतर?

क्या कोई मुझे हाइव की बाहरी तालिका और आंतरिक तालिकाओं के बीच का अंतर बता सकता है? मुझे पता है कि टेबल छोड़ते समय अंतर आता है। मुझे समझ नहीं आ रहा है कि डेटा के द्वारा आपके द्वारा क्या मतलब है और मेटाडेटा आंतरिक में हटा दिया गया है और केवल बाहरी तालिका में मेटाडेटा हटा दिया गया है क्या कोई मुझे नोड्स के मामले में बता सकता है कृपया

Solutions Collecting From Web of "छत्ता आंतरिक तालिकाओं और बाहरी तालिकाओं के बीच अंतर?"

हाइव के पास मास्टर नोड पर एक रिलेशनल डेटाबेस है जो इसे राज्य का ट्रैक रखने के लिए उपयोग करता है। उदाहरण के लिए, जब आप CREATE TABLE FOO(foo string) LOCATION 'hdfs://tmp/'; , यह तालिका स्कीमा डेटाबेस में संग्रहीत है।

यदि आपके पास एक विभाजन तालिका है, तो विभाजन को डेटाबेस में संग्रहित किया जाता है (यह हाइव को फ़ाइल सिस्टम पर जाने और उन्हें ढूंढने के बिना विभाजन की सूचियों का उपयोग करने की अनुमति देता है) इन प्रकार की चीजें 'मेटाडेटा' हैं

जब आप एक आंतरिक तालिका छोड़ते हैं, तो वह डेटा को छोड़ देता है, और यह मेटाडेटा भी चलाता है

जब आप एक बाहरी तालिका छोड़ते हैं, तो यह केवल मेटा डेटा को छोड़ देता है इसका मतलब है कि हाइव अब उस डेटा से अनजान है। यह डेटा को स्वयं स्पर्श नहीं करता है

हाइव टेबल बाहरी या आंतरिक रूप से बनाया जा सकता है यह एक विकल्प है जो डेटा को लोड, नियंत्रित, और प्रबंधित करने के तरीके को प्रभावित करता है।

बाहरी तालिकाओं का उपयोग करें जब:

  1. डेटा हाइव के बाहर भी उपयोग किया जाता है उदाहरण के लिए, डेटा फ़ाइलों को एक मौजूदा प्रोग्राम द्वारा पढ़ा और संसाधित किया जाता है जो फ़ाइलों को लॉक नहीं करता है
  2. एक ड्रॉप टेबल के बाद भी डेटा को अंतर्निहित स्थान में रहने की आवश्यकता है। यह तब भी लागू हो सकता है यदि आप एक डेटा सेट पर एकाधिक स्कीमा (तालिकाओं या दृश्य) इंगित कर रहे हैं या यदि आप विभिन्न संभव स्कीमा के माध्यम से चल रहे हैं
  3. आप एक कस्टम स्थान जैसे एएसवी जैसे उपयोग करना चाहते हैं।
  4. हाइव के पास डेटा और नियंत्रण सेटिंग्स, डायर्स इत्यादि का नहीं होना चाहिए, आपके पास एक अन्य प्रोग्राम या प्रक्रिया है जो इन चीजों को करेंगे।
  5. आप मौजूदा तालिका (चयन के रूप में) के आधार पर तालिका नहीं बना रहे हैं

आंतरिक तालिकाओं का उपयोग करें जब:

डेटा अस्थायी है।

आप चाहते हैं कि हाइव पूरी तरह से तालिका और डेटा के जीवन चक्र को प्रबंधित करें।

आपको प्रश्न का उत्तर देने के लिए:

बाहरी टेबल्स के लिए, हाइव डेटा को अपने गोदाम निर्देशिका में स्थानांतरित नहीं करता है अगर बाहरी तालिका गिरा दी गई है, तो तालिका मेटाडेटा हटा दिया गया है लेकिन डेटा नहीं है

आंतरिक तालिकाओं के लिए, हाइव अपने गोदाम निर्देशिका में डेटा ले जाता है यदि तालिका गिरा दी गई है, तो तालिका मेटाडेटा और डेटा हटा दिया जाएगा।


आपके सन्दर्भ के लिए,

आंतरिक और बाह्य तालिकाओं के बीच का अंतर:

बाहरी टेबल्स के लिए –

  • बाह्य तालिका स्टोर एचडीएफएस सर्वर पर फाइल करता है, लेकिन सारणियां पूरी तरह से स्रोत फ़ाइल से जुड़ी नहीं हैं।

  • यदि आप बाहरी तालिका हटाते हैं तो फाइल अब भी एचडीएफएस सर्वर पर बनी हुई है।

    HIVE -QL का उपयोग करके HIVE में "table_test" नामक एक बाह्य तालिका बनाते समय और "फ़ाइल" फ़ाइल करने के लिए तालिका को लिंक करने के लिए उदाहरण के रूप में, फिर HIVE से "table_test" को हटाने से "फाइल" को HDFS से नहीं हटाया जाएगा

  • बाहरी तालिका फ़ाइलों को एचडीएफएस फ़ाइल संरचना तक पहुंच रखने वाले किसी भी व्यक्ति के लिए उपयोग किया जा सकता है और इसलिए सुरक्षा को एचडीएफएस फ़ाइल / फ़ोल्डर स्तर पर प्रबंधित करना होगा।

  • मेटा डेटा मास्टर नोड पर बनाए रखा जाता है, और HIVE से एक बाहरी तालिका को हटाने से केवल मेटाडेटा को डेटा / फ़ाइल नहीं हटाता है


आंतरिक टेबल्स के लिए-

  • hive.metastore.warehouse.dir में सेटिंग्स के आधार पर एक निर्देशिका में संग्रहीत, डिफ़ॉल्ट आंतरिक तालिकाओं के द्वारा निम्न निर्देशिका "/ उपयोगकर्ता / हाइव / गोदाम" में संग्रहीत किया जाता है, आप इसे कॉन्फ़िग फ़ाइल में स्थान अपडेट करके बदल सकते हैं।
  • तालिका को हटाना मेटाडाटा और मास्ट-नोड और एचडीएफफ़्स से डेटा को क्रमशः हटा देता है।
  • आंतरिक तालिका फ़ाइल सुरक्षा केवल HIVE के माध्यम से नियंत्रित होती है। संभवतः स्कीमा स्तर पर (संगठन पर निर्भर करता है) सुरक्षा के लिए HIVE के भीतर प्रबंधित किया जाना आवश्यक है

हाइव में आंतरिक या बाहरी टेबल्स हो सकते हैं, यह एक ऐसा विकल्प है जो डेटा को लोड, नियंत्रित और प्रबंधित करने के तरीके को प्रभावित करता है।

बाहरी तालिकाओं का उपयोग करें जब:

  • डेटा हाइव के बाहर भी उपयोग किया जाता है उदाहरण के लिए, डेटा फ़ाइलों को एक मौजूदा प्रोग्राम द्वारा पढ़ा और संसाधित किया जाता है जो फ़ाइलों को लॉक नहीं करता है
  • एक ड्रॉप टेबल के बाद भी डेटा को अंतर्निहित स्थान में रहने की आवश्यकता है। यह तब भी लागू हो सकता है जब आप एक डेटा सेट पर एकाधिक स्कीमा (तालिकाओं या दृश्य) इंगित कर रहे हैं या यदि आप विभिन्न संभव स्कीमा के माध्यम से चल रहे हैं
  • हाइव के डेटा और नियंत्रण सेटिंग्स, निर्देशिका, आदि , आप एक और प्रोग्राम या प्रक्रिया हो सकता है कि उन चीजों को करना होगा नहीं होना चाहिए।
  • आप मौजूदा तालिका (चयन के रूप में) के आधार पर तालिका नहीं बना रहे हैं

आंतरिक तालिकाओं का उपयोग करें जब:

  • डेटा अस्थायी है
  • आप चाहते हैं कि हाइव पूरी तरह से टेबल और डेटा के जीवन-चक्र को प्रबंधित करें

स्रोत:

एचडीआईसीइट: हाइव आंतरिक और बाहरी टेबल्स पहचान

Hadoop- HIVE में आंतरिक और बाह्य तालिकाओं

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

बाहरी तालिकाओं में, यदि आप इसे छोड़ते हैं, तो यह केवल तालिका का स्कीमा हटाता है, तालिका डेटा भौतिक स्थान में मौजूद है। तो हटाए जाने के लिए डेटा का उपयोग करें थाउप fs – rmr tablename प्रबंधित तालिका हाइव के पास तालिकाओं पर पूर्ण नियंत्रण होगा। बाहरी तालिकाओं में उपयोगकर्ताओं पर इसका नियंत्रण होगा।

बाह्य हिप टेबल में फायदे हैं कि जब हम टेबल को छोड़ते हैं तो हम फाइल को नहीं निकालते हैं, हम पंक्ति प्रारूपों को विभिन्न सेटिंग्स के साथ सेट कर सकते हैं, जैसे कि serde …. सीमांकित

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

इस परिदृश्य पर विचार करें जो बाहरी तालिका के लिए सबसे उपयुक्त है:

एक नक्शाप्रदर्शन (एमआर) नौकरी n सब लॉग फाइलों (जैसे प्रत्येक उप लॉग फ़ाइल में एक विशिष्ट संदेश प्रकार लॉग शामिल है) थूक करने के लिए एक विशाल लॉग फ़ाइल फ़िल्टर करता है और आउटपुट अर्थात् n सब लॉग फाइलें hdfs में संग्रहीत की जाती हैं।

इन लॉग फाइलों को अधिक विश्लेषणात्मक प्रदर्शन करने के लिए हाइव टेबल में लोड किया जाना है, इस परिदृश्य में मैं एक बाहरी तालिका (एस) की सिफारिश करेगा, क्योंकि वास्तविक लॉग फाइलें उत्पन्न होती हैं और एक बाहरी प्रक्रिया अर्थात् एक एमआर की नौकरी के स्वामित्व के अलावा आप किसी से बच सकते हैं प्रत्येक बनाये गये लॉग फ़ाइल को संबंधित हाइव टेबल में भी लोड करने का अतिरिक्त कदम

हाइव में एक बाहरी तालिका के लिए सबसे अच्छा उपयोग केस तब होता है जब आप किसी फ़ाइल से तालिका बनाना चाहते हैं या तो CSV या पाठ

अब तक मेरे सीमित शोध और परीक्षण के आधार पर व्यवहार में अंतर (इच्छित उद्देश्य नहीं) (Hive 1.1.0-cdh5.12.0 का उपयोग करते हुए) ऐसा लगता है कि जब कोई तालिका गिरा दी जाती है

  • आंतरिक (प्रबंधित) तालिकाओं का डेटा एचडीएफएस फाइल सिस्टम से हटा दिया जाता है
  • जबकि बाहरी तालिकाओं का डेटा एचडीएफएस फाइल सिस्टम से हटाया नहीं जाता है।

(नोट: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL में अनुभाग 'प्रबंधित और बाहरी टेबल्स' देखें जो कुछ अन्य अंतर को सूचीबद्ध करता है जिसे मैं पूरी तरह से समझ नहीं पाया)

मेरा मानना ​​है कि हाइव उस स्थान का चयन करता है जहां उसे निम्न प्राथमिकता के आधार पर ऊपर से नीचे तक तालिका बनाने की आवश्यकता होती है

  1. टेबल निर्माण के दौरान निर्धारित स्थान
  2. डेटाबेस / स्कीमा निर्माण में परिभाषित स्थान जिसमें तालिका बनाई जाती है।
  3. डिफ़ॉल्ट हाइव वेयरहाउस निर्देशिका (संपत्ति hive.metastore.warehouse.dir में hive.site.xml)

जब "स्थान" विकल्प "एक छत्ते की मेज के निर्माण" के दौरान प्रयोग नहीं किया जाता है, तो उपरोक्त प्राथमिकता नियम का उपयोग किया जाता है। यह आंतरिक और बाह्य दोनों तालिकाओं के लिए लागू है इसका अर्थ है एक आंतरिक तालिका को वेअरहाउस निर्देशिका में रहने के लिए जरूरी नहीं है और कहीं और रह सकते हैं

नोट: मैंने कुछ परिदृश्यों को खो दिया हो सकता है, लेकिन मेरी सीमित अन्वेषण के आधार पर, आंतरिक और एक्स्टेंनल दोनों तालिका का व्यवहार समान रूप से ऊपर वर्णित एक अंतर (डेटा हटाना) को छोड़कर लगता है। मैंने निम्नलिखित आंतरिक और बाह्य दोनों तालिकाओं के लिए परिदृश्यों की कोशिश की

  1. स्थान विकल्प के साथ और बिना तालिका बनाना
  2. विभाजन विकल्प के साथ और बिना मेज बनाना
  3. हाइव लोड का उपयोग करते हुए नए डेटा को जोड़ने और विवरण सम्मिलित करें
  4. हाइव के बाहर तालिका स्थान (एचडीएफएस कमांड्स के उपयोग से) में डेटा फ़ाइलों को जोड़ना और "एमएसकेक मरम्मत टेबल कमांड का प्रयोग करके तालिका ताज़ा करना
  5. तालिकाओं को छोड़ना

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

हाइव स्टोर्स केवल मेटास्टोर में मेटा डेटा और मूल डेटा को हाइव के बाहर की ओर रखते हैं जब हम बाहरी टेबल का उपयोग करते हैं, तो हम अपने स्थान को '' स्थान दे सकते हैं जब हम टेबल छोड़ते हैं

जब एचडीएफएस में पहले से ही डेटा मौजूद होता है, तो डेटा का वर्णन करने के लिए एक बाहरी छिद्र तालिका बनाई जा सकती है। इसे बाहरी कहा जाता है क्योंकि बाहरी तालिका में डेटा डिफ़ॉल्ट गोदाम निर्देशिका के बजाय LOCATION गुणों में निर्दिष्ट है।

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

प्रबंधित तालिकाओं के लिए, हाइव अपने डेटा के जीवन चक्र को नियंत्रित करता है। हाइव प्रबंधित करें तालिकाओं के डेटा को उप-निर्देशिका में hive.metastore.warehouse.dir द्वारा डिफ़ॉल्ट रूप से परिभाषित निर्देशिका के अंतर्गत संग्रहीत करता है।

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

उस समय, बाहरी तालिका परिभाषित की गई है जो उस डेटा को इंगित करता है, लेकिन इसके स्वामित्व को नहीं लेता है।

सरल शब्दों में, दो बातें हैं:

हाइव गोदाम में चीजों का प्रबंधन कर सकता है अर्थात यह गोदाम से डेटा को नष्ट नहीं करेगा। जब हम तालिका हटाते हैं:

1) आंतरिक सारणी के लिए डेटा आंतरिक रूप से गोदाम में प्रबंधित किया जाता है। तो हटा दिया जाएगा।

2) बाहरी तालिकाओं के लिए डेटा को गोदाम से अनन्त रूप से प्रबंधित किया जाता है। तो हटाया नहीं जा सकता और क्लाइंट अन्य तो हाइव भी इसका इस्तेमाल कर सकते हैं

आंतरिक : तालिका पहले बनाई गई है और डेटा बाद में लोड होता है

बाह्य : डेटा मौजूद है और तालिका इसके ऊपर बनाई गई है