2016-06-23 9 views

उत्तर

11

मुझे ऐसा नहीं लगता था कि दस्तावेज़ीकरण के उदाहरण पर्याप्त थे, इसलिए मेरा प्रयास यहां है एक जवाब।

शुरुआत में केवल --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 नामस्थान के तहत उपयोगकर्ता चर सेट करना शायद कुछ भी तोड़ नहीं देगा, लेकिन इसकी अनुशंसा नहीं की जाती है।

+0

मैं वास्तव में फाई इसे बहुत समय पहले ठीक कर दिया, लेकिन अच्छा जवाब, धन्यवाद! – Karnimrod

+0

मैंने पाया कि शायद आपके पास था, लेकिन मैंने भविष्य में पाठकों के लिए एक और जवाब प्रस्तुत करने का फैसला किया। =] –

1

नाम स्थान को छोड़कर कोई अंतर नहीं। hiveconf और hivevar अलग-अलग नामस्थान हैं। hivevar नेमस्पेस को कॉन्फ़िगरेशन गुण नामस्थान और हाइव वेरिएबल्स नेमस्पेस को अलग करने के लिए जोड़ा गया था। अधिक जानकारी के लिए https://issues.apache.org/jira/browse/HIVE-2020 देखें।

0

आप differance के लिए इस का उल्लेख कर सकते हैं

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+VariableSubstitution

चर के लिए तीन नामस्थान हैं - hiveconf, प्रणाली, और env। (Custom variables को हाइव 0.8.0 में परिभाषित या हिवेवर विकल्प के साथ एक अलग नामस्थान में भी बनाया जा सकता है और बाद में रिलीज।)

5

@ लामामा ने इसे विस्तार से समझाया है, साथ ही दोनों प्रकार के चर अलग-अलग उपयोग किए जाते हैं।

--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

संबंधित मुद्दे