छत्ता -h से:-hivevar और -hiveconf के बीच क्या अंतर है?
--hiveconf <property=value> Use value for given property
--hivevar <key=value> Variable subsitution to apply to hive
commands. e.g. --hivevar A=B
छत्ता -h से:-hivevar और -hiveconf के बीच क्या अंतर है?
--hiveconf <property=value> Use value for given property
--hivevar <key=value> Variable subsitution to apply to hive
commands. e.g. --hivevar A=B
मुझे ऐसा नहीं लगता था कि दस्तावेज़ीकरण के उदाहरण पर्याप्त थे, इसलिए मेरा प्रयास यहां है एक जवाब।
शुरुआत में केवल --hiveconf
था और परिवर्तनीय प्रतिस्थापन मौजूद नहीं था।
--hiveconf
विकल्प उपयोगकर्ताओं को कमांड लाइन से Hive configuration values सेट करने की अनुमति देता है और यह था। सभी हाइव कॉन्फ़िगरेशन मान hiveconf
नेमस्पेस के अंतर्गत संग्रहीत हैं, यानी hiveconf:mapred.reduce.tasks
। इन मानों ने आपको मैपर्स और रेड्यूसर की संख्या जैसे चीजों को नियंत्रित करने की अनुमति दी है, अगर स्थिति संदेश प्रदर्शित किए जाने चाहिए, और यदि स्क्रिप्ट त्रुटियों पर जारी रहनी चाहिए।
बाद में, variable substitution was added। इसका मतलब है कि अब आप ${...}
वाक्यविन्यास के साथ प्रश्नों में चर का उपयोग कर सकते हैं। हालांकि, कमांड लाइन से सेट किए जाने वाले एकमात्र वेरिएबल hiveconf
नेमस्पेस के तहत --hiveconf
का उपयोग कर रहे थे, इसलिए वहां उपयोगकर्ता अपने चर डालते हैं।
हाइव कॉन्फ़िगरेशन नेमस्पेस के तहत अपने व्यक्तिगत चर डालकर शायद कुछ भी तोड़ नहीं होगा, लेकिन यह भी अच्छा फॉर्म नहीं है। बाद में, it was suggested कि hivevar
नामस्थान विशेष रूप से उपयोगकर्ता चर के लिए जोड़ा जा सकता है जिसे --hivevar
का उपयोग करके कमांड लाइन पर भी परिभाषित किया जा सकता है। इसका मतलब हाइव कॉन्फ़िगरेशन मानों और उपयोगकर्ता परिभाषित चर के बीच एक क्लीनर अलगाव था।
सारांश में:
hiveconf
नाम स्थान और --hiveconf
हाइव कॉन्फ़िगरेशन मान सेट करने के लिए इस्तेमाल किया जाना चाहिए।
hivevar
नामस्थान और --hivevar
उपयोगकर्ता चर को परिभाषित करने के लिए उपयोग किया जाना चाहिए।
hiveconf
नामस्थान के तहत उपयोगकर्ता चर सेट करना शायद कुछ भी तोड़ नहीं देगा, लेकिन इसकी अनुशंसा नहीं की जाती है।
नाम स्थान को छोड़कर कोई अंतर नहीं। hiveconf
और hivevar
अलग-अलग नामस्थान हैं। hivevar
नेमस्पेस को कॉन्फ़िगरेशन गुण नामस्थान और हाइव वेरिएबल्स नेमस्पेस को अलग करने के लिए जोड़ा गया था। अधिक जानकारी के लिए https://issues.apache.org/jira/browse/HIVE-2020 देखें।
आप differance के लिए इस का उल्लेख कर सकते हैं
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+VariableSubstitution
चर के लिए तीन नामस्थान हैं - hiveconf, प्रणाली, और env। (Custom variables को हाइव 0.8.0 में परिभाषित या हिवेवर विकल्प के साथ एक अलग नामस्थान में भी बनाया जा सकता है और बाद में रिलीज।)
@ लामामा ने इसे विस्तार से समझाया है, साथ ही दोनों प्रकार के चर अलग-अलग उपयोग किए जाते हैं।
--hivevar
चर ${var-name}
का उपयोग करके चर का उपयोग किया जाता है, जबकि --hiveconf
को ${hiveconf:var-name}
को हाइव के अंदर एक्सेस किया जाता है।
उदा। उदाहरणों के नीचे चर का उपयोग करें और इसके मूल्य को हाइव में प्रिंट करें।
hivevar:
hive --hivevar a='this is a' -e '!echo ${a};'
उत्पादन: this is a
hiveconf:
hive --hiveconf a='this is a' -e '!echo ${hiveconf:a};'
उत्पादन: this is a
मैं वास्तव में फाई इसे बहुत समय पहले ठीक कर दिया, लेकिन अच्छा जवाब, धन्यवाद! – Karnimrod
मैंने पाया कि शायद आपके पास था, लेकिन मैंने भविष्य में पाठकों के लिए एक और जवाब प्रस्तुत करने का फैसला किया। =] –