हाइव फ़ंक्शन: बिल्ट-इन और UDF [उपयोगकर्ता परिभाषित फ़ंक्शन] उदाहरण
फंक्शन्स को एक विशिष्ट उद्देश्य के लिए बनाया जाता है ताकि तालिका स्तंभ नामों के ऑपरेंड पर गणितीय, अंकगणितीय, तार्किक और संबंधपरक जैसे ऑपरेशन किए जा सकें।
अंतर्निहित कार्य
ये ऐसे फ़ंक्शन हैं जो हाइव में पहले से ही उपलब्ध हैं। सबसे पहले, हमें एप्लिकेशन की आवश्यकता की जांच करनी होगी, और फिर हम अपने एप्लिकेशन में इन बिल्ट-इन फ़ंक्शन का उपयोग कर सकते हैं। हम इन फ़ंक्शन को सीधे अपने एप्लिकेशन में कॉल कर सकते हैं।
वाक्यविन्यास और प्रकार का उल्लेख अगले अनुभाग में किया गया है।
HIVE में अंतर्निहित कार्यों के प्रकार
- संग्रहण कार्य
- दिनांक फ़ंक्शन
- गणितीय कार्य
- सशर्त कार्य
- स्ट्रिंग फ़ंक्शंस
- विविध कार्य
संग्रहण कार्य
इन फ़ंक्शन का उपयोग संग्रह के लिए किया जाता है। संग्रह का अर्थ है तत्वों का समूहन और तत्वों की एकल या सरणी लौटाना फ़ंक्शन नाम में उल्लिखित रिटर्न प्रकार पर निर्भर करता है।
| वापसी प्रकार | फ़ंक्शन का नाम | विवरण |
|---|---|---|
| INT | आकार(मानचित्र ) | यह मानचित्र प्रकार में घटकों की संख्या लाएगा और देगा |
| INT | आकार(सरणी ) | यह सरणी प्रकार में तत्वों की संख्या लाएगा और देगा |
| सरणी | मानचित्र_कुंजियाँ(मानचित्र ) | यह इनपुट मैप की कुंजियों वाली एक सरणी लाएगा और देगा। यहाँ सरणी अव्यवस्थित है |
| सरणी | मानचित्र_मानचित्र(मानचित्र ) | यह इनपुट मैप के मानों वाली एक सरणी लाएगा और देगा। यहाँ सरणी अव्यवस्थित है |
| सरणी | सॉर्ट_ऐरे(ऐरे ) | इनपुट सरणी को सरणी और तत्वों के आरोही क्रम में सॉर्ट करता है और इसे वापस करता है |
दिनांक फ़ंक्शन
इनका उपयोग दिनांक में हेरफेर करने और दिनांक प्रकारों को एक प्रकार से दूसरे प्रकार में रूपान्तरित करने के लिए किया जाता है:
| फ़ंक्शन का नाम | वापसी प्रकार | विवरण |
|---|---|---|
| यूनिक्स_टाइमस्टैम्प() | BigInt | हमें वर्तमान मिलेगा यूनिक्स सेकंड में टाइमस्टैम्प |
| To_date(स्ट्रिंग टाइमस्टैम्प) | स्ट्रिंग | यह टाइमस्टैम्प स्ट्रिंग का दिनांक वाला भाग प्राप्त करेगा और देगा: |
| वर्ष(स्ट्रिंग तिथि) | INT | यह दिनांक या टाइमस्टैम्प स्ट्रिंग का वर्ष भाग लाएगा और देगा |
| तिमाही (तारीख/टाइमस्टैम्प/स्ट्रिंग) | INT | यह 1 से 4 की सीमा में किसी दिनांक, टाइमस्टैम्प या स्ट्रिंग के लिए वर्ष की तिमाही प्राप्त करेगा और देगा |
| महीना (स्ट्रिंग तिथि) | INT | यह किसी तारीख या टाइमस्टैम्प स्ट्रिंग का महीना वाला भाग देगा |
| घंटा(स्ट्रिंग दिनांक) | INT | यह टाइमस्टैम्प का घंटा लाएगा और देगा |
| मिनट(स्ट्रिंग दिनांक) | INT | यह टाइमस्टैम्प का मिनट लाएगा और देगा |
| Date_sub(स्ट्रिंग आरंभ तिथि, int दिन) | स्ट्रिंग | यह आरंभ तिथि से दिनों की संख्या घटाकर देगा |
| वर्तमान_तिथि | डेटा | यह क्वेरी मूल्यांकन के प्रारंभ में वर्तमान दिनांक प्राप्त करेगा और देगा |
| अंतिम _दिन(स्ट्रिंग दिनांक) | स्ट्रिंग | यह उस महीने का अंतिम दिन लाएगा और देगा जिससे तारीख संबंधित है |
| ट्रंक(स्ट्रिंग दिनांक, स्ट्रिंग प्रारूप) | स्ट्रिंग | यह प्रारूप द्वारा निर्दिष्ट इकाई में संक्षिप्त तिथि प्राप्त करेगा और देगा।
इसमें समर्थित प्रारूप: माह/सोम/माह, वर्ष/वर्ष/वर्ष. |
गणितीय कार्य
इन कार्यों का उपयोग गणितीय के लिए किया जाता है OperaUDFs बनाने के बजाय, हमारे पास हाइव में कुछ अंतर्निहित गणितीय फ़ंक्शन हैं।
| फ़ंक्शन का नाम | वापसी प्रकार | विवरण |
|---|---|---|
| गोल (डबल एक्स) | डबल | यह X का गोल BIGINT मान प्राप्त करेगा और लौटाएगा |
| गोल (डबल एक्स, INT डी) | डबल | यह X को d दशमलव स्थानों तक पूर्णांकित करके लाएगा और लौटाएगा |
| ब्रौंड (डबल एक्स) | डबल | यह HALF_EVEN राउंडिंग मोड का उपयोग करके X का राउंडेड BIGINT मान प्राप्त करेगा और लौटाएगा |
| मंजिल(डबल एक्स) | बिगिनट | यह अधिकतम BIGINT मान प्राप्त करेगा और लौटाएगा जो X मान के बराबर या उससे कम है |
| छत (डबल ए), छत (डबल ए) | बिगिनट | यह न्यूनतम BIGINT मान प्राप्त करेगा और लौटाएगा जो X मान के बराबर या उससे अधिक है |
| रैंड(), रैंड(INT बीज) | डबल | यह एक यादृच्छिक संख्या प्राप्त करेगा और लौटाएगा जो 0 से 1 तक समान रूप से वितरित है |
सशर्त कार्य
ये फ़ंक्शन सशर्त मानों की जाँच के लिए उपयोग किए जाते हैं।
| फ़ंक्शन का नाम | वापसी प्रकार | विवरण |
|---|---|---|
| यदि(बूलियन परीक्षण शर्त, टी मूल्य सत्य, टी मूल्य असत्य या शून्य) | T | यह तब True मान प्राप्त करेगा और देगा जब परीक्षण स्थिति सत्य है, अन्यथा मान False या Null देता है। |
| ISNULL( X) | बूलियन | यदि X शून्य है तो यह सत्य लाएगा और अन्यथा असत्य देगा। |
| ISNOTNULL(X ) | बूलियन | यदि X NULL नहीं है तो यह true देगा और अन्यथा false देगा। |
स्ट्रिंग फ़ंक्शंस
स्ट्रिंग मैनिपुलेशन और स्ट्रिंग ऑपरेशन के लिए इन फंक्शन्स को कॉल किया जा सकता है।
| फ़ंक्शन का नाम | वापसी प्रकार | विवरण |
|---|---|---|
| रिवर्स(स्ट्रिंग एक्स) | स्ट्रिंग | यह X की उलटी स्ट्रिंग देगा |
| rpad(स्ट्रिंग str, int लंबाई, स्ट्रिंग पैड) | स्ट्रिंग | यह str को प्राप्त करेगा और देगा, जो कि पैड के साथ लंबाई (पूर्णांक मान) की लंबाई तक दाईं ओर पैड किया गया है |
| rtrim(स्ट्रिंग X) | स्ट्रिंग | यह X के अंत (दाहिने हाथ की ओर) से रिक्त स्थान को ट्रिम करने से उत्पन्न स्ट्रिंग को लाएगा और लौटाएगा उदाहरण के लिये, rtrim(' परिणाम ') परिणाम ' में |
| स्पेस(INT n) | स्ट्रिंग | यह n रिक्त स्थानों की एक स्ट्रिंग प्राप्त करेगा और देगा। |
| विभाजित करें(स्ट्रिंग स्ट्र, स्ट्रिंग पैट) | सरणी | str को pat के चारों ओर विभाजित करता है (pat एक नियमित अभिव्यक्ति है). |
| Str_to_map(टेक्स्ट[, सीमांकक1, सीमांकक2]) | नक्शा | यह दो सीमांककों का उपयोग करके पाठ को कुंजी-मान युग्मों में विभाजित करेगा। |
यूडीएफ (उपयोगकर्ता परिभाषित फ़ंक्शन)
हाइव में, उपयोगकर्ता कुछ क्लाइंट आवश्यकताओं को पूरा करने के लिए अपने स्वयं के फ़ंक्शन परिभाषित कर सकते हैं। इन्हें हाइव में UDF के रूप में जाना जाता है। उपयोगकर्ता परिभाषित फ़ंक्शन में लिखे गए Java विशिष्ट मॉड्यूल के लिए.
कुछ UDF को विशेष रूप से एप्लिकेशन फ्रेमवर्क में कोड की पुनः प्रयोज्यता के लिए डिज़ाइन किया गया है। डेवलपर इन फ़ंक्शन को विकसित करेगा Java और उन UDF को हाइव के साथ एकीकृत करें।
क्वेरी निष्पादन के दौरान, डेवलपर सीधे कोड का उपयोग कर सकता है, और UDF उपयोगकर्ता-परिभाषित कार्यों के अनुसार आउटपुट लौटाएगा। यह कोडिंग और निष्पादन के मामले में उच्च प्रदर्शन प्रदान करेगा।
उदाहरण के लिए, स्ट्रिंग स्टेमिंग के लिए हमारे पास हाइव में कोई पूर्वनिर्धारित फ़ंक्शन नहीं है। इसके लिए, हम स्टेम UDF को इस प्रकार लिख सकते हैं Javaजहां भी हमें स्टेम कार्यक्षमता की आवश्यकता होती है, हम सीधे हाइव में इस स्टेम यूडीएफ को कॉल कर सकते हैं।
यहाँ स्टेम कार्यक्षमता का अर्थ है शब्दों को उसके मूल शब्दों से प्राप्त करना। यह स्टेमिंग एल्गोरिदम की तरह है जो “विशिंग”, “विशेड” और “विशेस” शब्दों को मूल शब्द “विश” में बदल देता है। इस प्रकार की कार्यक्षमता को निष्पादित करने के लिए, हम UDF को इस प्रकार लिख सकते हैं: Java और इसे एकीकृत करें करंड.
उपयोग के मामलों के आधार पर, UDFs लिखे जा सकते हैं। यह अलग-अलग संख्या में इनपुट और आउटपुट मान स्वीकार करेगा और उत्पन्न करेगा।
UDF का सामान्य प्रकार एक एकल इनपुट मान स्वीकार करेगा और एक एकल आउटपुट मान उत्पन्न करेगा। यदि क्वेरी में UDF का उपयोग किया जाता है, तो परिणाम डेटा सेट में प्रत्येक पंक्ति के लिए UDF को एक बार कॉल किया जाएगा।
दूसरे तरीके में, यह मानों के समूह को इनपुट के रूप में स्वीकार कर सकता है और एक एकल आउटपुट मान भी लौटा सकता है।
