आपको चर प्रतिस्थापन के लिए विशेष हाइवेंकफ का उपयोग करने की आवश्यकता है । जैसे
hive> set CURRENT_DATE='2012-09-16';
hive> select * from foo where day >= '${hiveconf:CURRENT_DATE}'
इसी तरह, आप कमांड लाइन पर पास कर सकते हैं:
% hive -hiveconf CURRENT_DATE='2012-09-16' -f test.hql
ध्यान दें कि एनवी और सिस्टम चर भी हैं, इसलिए आप ${env:USER}
उदाहरण के लिए संदर्भ ले सकते हैं ।
कमांड लाइन से सभी उपलब्ध चर देखने के लिए, रन करें
% hive -e 'set;'
या हाइव प्रॉम्प्ट से, भागो
hive> set;
अद्यतन:
मैंने हाइवार चर का उपयोग करना शुरू कर दिया है , उन्हें hql स्निपेट में डालकर मैं hive CLI से source
कमांड का उपयोग कर शामिल कर सकता हूं (या कमांड लाइन से -i विकल्प पास कर सकता हूं )। यहाँ लाभ यह है कि चर का उपयोग तब या उसके बिना हाइववार उपसर्ग के साथ किया जा सकता है, और वैश्विक बनाम स्थानीय उपयोग के लिए कुछ अनुमति देता है।
तो, मान लें कि कुछ setup.hql है जो एक टैबलनेम वैरिएबल सेट करता है:
set hivevar:tablename=mytable;
फिर, मैं छत्ते में ला सकता हूं:
hive> source /path/to/setup.hql;
और क्वेरी में उपयोग करें:
hive> select * from ${tablename}
या
hive> select * from ${hivevar:tablename}
मैं एक "स्थानीय" टैबलेन भी सेट कर सकता था, जो $ {टैबलेनम} के उपयोग को प्रभावित करेगा, लेकिन $ {हाइववर: टैबलेनमे} को नहीं।
hive> set tablename=newtable;
hive> select * from ${tablename} -- uses 'newtable'
बनाम
hive> select * from ${hivevar:tablename} -- still uses the original 'mytable'
शायद CLI से बहुत अधिक मतलब नहीं है, लेकिन स्रोत का उपयोग करने वाली फ़ाइल में hql हो सकता है , लेकिन बाकी स्क्रिप्ट में उपयोग करने के लिए कुछ चर "स्थानीय रूप से" सेट करें।