Hive Functions: Built-in & UDF [User Defined Functions] Παράδειγμα


Οι συναρτήσεις κατασκευάζονται για συγκεκριμένο σκοπό για την εκτέλεση πράξεων όπως Μαθηματική, αριθμητική, λογική και σχεσιακή στους τελεστές των ονομάτων στηλών του πίνακα.

Ενσωματωμένες λειτουργίες

Αυτές είναι λειτουργίες που είναι ήδη διαθέσιμες στο Hive. Πρώτα, πρέπει να ελέγξουμε την απαίτηση εφαρμογής και, στη συνέχεια, μπορούμε να χρησιμοποιήσουμε αυτές τις ενσωματωμένες λειτουργίες στις εφαρμογές μας. Μπορούμε να καλέσουμε αυτές τις λειτουργίες απευθείας στην εφαρμογή μας.

Η σύνταξη και οι τύποι αναφέρονται στην παρακάτω ενότητα.

Τύποι ενσωματωμένων λειτουργιών στο HIVE

  • Λειτουργίες συλλογής
  • Λειτουργίες ημερομηνίας
  • Μαθηματικές Συναρτήσεις
  • Συναρτήσεις υπό όρους
  • Λειτουργίες συμβολοσειράς
  • Διάφορα. Λειτουργίες

Λειτουργίες συλλογής

Αυτές οι λειτουργίες χρησιμοποιούνται για συλλογές. Οι συλλογές σημαίνουν ότι η ομαδοποίηση στοιχείων και η επιστροφή ενός ή ενός πίνακα στοιχείων εξαρτάται από τον τύπο επιστροφής που αναφέρεται στο όνομα της συνάρτησης.

Τύπος επιστροφής Όνομα συνάρτησης Descriptιόν
INT μέγεθος (Χάρτης ) Θα ανακτήσει και θα δώσει τον αριθμό των στοιχείων στον τύπο χάρτη
INT μέγεθος (Πίνακας ) Θα ανακτήσει και θα δώσει τον αριθμό των στοιχείων στον τύπο πίνακα
Πίνακας Κλειδιά_Χάρτη (Χάρτης ) Θα ανακτήσει και θα δώσει έναν πίνακα που περιέχει τα κλειδιά του χάρτη εισόδου. Εδώ ο πίνακας είναι ακατάστατος
Πίνακας Map_values ​​(Χάρτης ) Θα ανακτήσει και θα δώσει έναν πίνακα που περιέχει τις τιμές του χάρτη εισόδου. Εδώ ο πίνακας είναι ακατάστατος
Πίνακας Sort_array(Πίνακας ) ταξινομεί τον πίνακα εισόδου σε αύξουσα σειρά πίνακα και στοιχείων και τον επιστρέφει

Λειτουργίες ημερομηνίας

Αυτά χρησιμοποιούνται για την εκτέλεση χειρισμών ημερομηνίας και μετατροπής τύπων ημερομηνίας από έναν τύπο σε άλλο τύπο:

Όνομα συνάρτησης Τύπος επιστροφής Descriptιόν
Unix_Timestamp() BigInt Θα έχουμε ρεύμα Unix χρονική σήμανση σε δευτερόλεπτα
To_date (χρονοσήμανση συμβολοσειράς) κορδόνι Θα ανακτήσει και θα δώσει το τμήμα ημερομηνίας μιας συμβολοσειράς χρονικής σήμανσης:
έτος (ημερομηνία συμβολοσειράς) INT Θα ανακτήσει και θα δώσει στο έτος μέρος μιας ημερομηνίας ή μιας συμβολοσειράς χρονικής σφραγίδας
τρίμηνο (ημερομηνία/χρονοσήμανση/συμβολοσειρά) INT Θα ανακτήσει και θα δώσει το τρίμηνο του έτους για μια ημερομηνία, χρονική σήμανση ή συμβολοσειρά στο εύρος 1 έως 4
μήνας (ημερομηνία συμβολοσειράς) INT Θα δώσει στον μήνα μέρος μιας ημερομηνίας ή μιας συμβολοσειράς χρονικής σήμανσης
ώρα (ημερομηνία συμβολοσειράς) INT Θα ανακτήσει και θα δώσει την ώρα της χρονικής σφραγίδας
λεπτό (ημερομηνία συμβολοσειράς) INT Θα ανακτήσει και θα δώσει το λεπτό της χρονικής σφραγίδας
Date_sub (ημερομηνία έναρξης συμβολοσειράς, int ημέρες) κορδόνι Θα ανακτήσει και θα δώσει Αφαίρεση του αριθμού των ημερών μέχρι την ημερομηνία έναρξης
Σημερινή ημερομηνία Ραντεβού Θα ανακτήσει και θα δώσει την τρέχουσα ημερομηνία κατά την έναρξη της αξιολόγησης ερωτήματος
LAST _day (ημερομηνία συμβολοσειράς) κορδόνι Θα πάρει και θα δώσει την τελευταία ημέρα του μήνα στον οποίο ανήκει η ημερομηνία
trunc (ημερομηνία συμβολοσειράς, μορφή συμβολοσειράς) κορδόνι Θα ανακτήσει και θα δώσει ημερομηνία περικοπής στη μονάδα που καθορίζεται από τη μορφή.

Υποστηριζόμενες μορφές σε αυτό:

ΜΗΝΑΣ/ΜΗΝΑ/ΜΜ, ΕΤΟΣ/ΕΕΕΕ/ΕΕ.

Μαθηματικές Συναρτήσεις

Αυτές οι συναρτήσεις χρησιμοποιούνται για τα Μαθηματικά Operaθέσεις. Αντί να δημιουργούμε UDF , έχουμε κάποιες ενσωματωμένες μαθηματικές συναρτήσεις στο Hive.

Όνομα συνάρτησης Τύπος επιστροφής Descriptιόν
γύρος (DOUBLE X) ΔΙΠΛΌ Θα ανακτήσει και θα επιστρέψει τη στρογγυλεμένη BIGINT τιμή του X
γύρος (DOUBLE X, INT d) ΔΙΠΛΌ Θα ανακτήσει και θα επιστρέψει το X στρογγυλεμένο σε d δεκαδικά ψηφία
καφέ (DOUBLE X) ΔΙΠΛΌ Θα ανακτήσει και θα επιστρέψει τη στρογγυλεμένη BIGINT τιμή του X χρησιμοποιώντας τη λειτουργία στρογγυλοποίησης HALF_EVEN
όροφος (ΔΙΠΛΟ X) ΜΕΓΑΛΗ Θα ανακτήσει και θα επιστρέψει τη μέγιστη τιμή BIGINT που είναι ίση ή μικρότερη από την τιμή X
οροφή (ΔΙΠΛΟ α), οροφή (ΔΙΠΛΟ α) ΜΕΓΑΛΗ Θα ανακτήσει και θα επιστρέψει την ελάχιστη τιμή BIGINT που είναι ίση ή μεγαλύτερη από την τιμή X
rand(), rand(INT seed) ΔΙΠΛΌ Θα ανακτήσει και θα επιστρέψει έναν τυχαίο αριθμό που κατανέμεται ομοιόμορφα από το 0 στο 1

Συναρτήσεις υπό όρους

Αυτές οι συναρτήσεις χρησιμοποιούνται για ελέγχους τιμών υπό όρους.

Όνομα συνάρτησης Τύπος επιστροφής Descriptιόν
if (Boolean testCondition, T valueTrue, T valueFalseOrNull) T Θα ανακτηθεί και θα δώσει τιμή True when
Η συνθήκη δοκιμής είναι αληθής,
δίνει τιμή False or Null διαφορετικά.
ISNULL( X) Boolean Θα ανακτήσει και θα δώσει true αν το X είναι NULL και ψευδές διαφορετικά.
ISNOTNULL(X) Boolean Θα ανακτήσει και θα δώσει true αν το X δεν είναι NULL και το false διαφορετικά.

Λειτουργίες συμβολοσειράς

Χειρισμοί συμβολοσειρών και λειτουργίες συμβολοσειράς μπορούν να ονομαστούν αυτές οι συναρτήσεις.

Όνομα συνάρτησης Τύπος επιστροφής Descriptιόν
αντίστροφη (συμβολοσειρά X) κορδόνι Θα δώσει την αντίστροφη συμβολοσειρά του X
rpad (string str, int μήκος, string pad) κορδόνι Θα πάρει και θα δώσει το str, το οποίο συμπληρώνεται δεξιά με pad σε μήκος μήκους (ακέραια τιμή)
rtrim (string X) κορδόνι Θα πάρει και θα επιστρέψει τη συμβολοσειρά που προκύπτει από την περικοπή των διαστημάτων από το άκρο (δεξιά πλευρά) του X
Για παράδειγμα, το rtrim(' results ') καταλήγει σε ' results'
διάστημα (INT n) κορδόνι Θα φέρει και δίνει μια σειρά από n διαστήματα.
split (STRING str, STRING pat) παράταξη Διαχωρίζει το str γύρω από το pat (το pat είναι μια κανονική έκφραση).
Str_to_map(κείμενο[, οριοθέτης1, οριοθέτης2]) χάρτης Θα χωρίσει το κείμενο σε ζεύγη κλειδιού-τιμής χρησιμοποιώντας δύο οριοθέτες.

UDF (Συναρτήσεις που καθορίζονται από το χρήστη)

Στο Hive, οι χρήστες μπορούν να ορίσουν τις δικές τους λειτουργίες για να ανταποκριθούν σε ορισμένες απαιτήσεις πελατών. Αυτά είναι γνωστά ως UDF στο Hive. Λειτουργίες καθορισμένες από το χρήστη γραμμένες σε Java για συγκεκριμένες ενότητες.

Ορισμένα από τα UDF έχουν σχεδιαστεί ειδικά για την επαναχρησιμοποίηση του κώδικα σε πλαίσια εφαρμογών. Ο προγραμματιστής θα αναπτύξει αυτές τις λειτουργίες στο Java και ενσωματώστε αυτά τα UDF με το Hive.

Κατά την εκτέλεση του ερωτήματος, ο προγραμματιστής μπορεί να χρησιμοποιήσει απευθείας τον κώδικα και τα UDF θα επιστρέψουν εξόδους σύμφωνα με τις εργασίες που καθορίζονται από τον χρήστη. Θα παρέχει υψηλή απόδοση όσον αφορά την κωδικοποίηση και την εκτέλεση.

Για παράδειγμα, για τη δημιουργία συμβολοσειρών δεν έχουμε καμία προκαθορισμένη συνάρτηση στο Hive. Για αυτό, μπορούμε να γράψουμε stem UDF in Java. Όπου χρειαζόμαστε λειτουργικότητα Stem, μπορούμε να καλέσουμε απευθείας αυτό το Stem UDF στο Hive.

Εδώ η λειτουργικότητα στελέχους σημαίνει την παραγωγή λέξεων από τις ρίζες του. Είναι σαν ο αλγόριθμος stemming να μειώνει τις λέξεις "wishing", "wishes" και "wishes" στη ρίζα της λέξης "wish". Για την εκτέλεση αυτού του τύπου λειτουργικότητας, μπορούμε να γράψουμε UDF in Java και ενσωματώστε το με Κυψέλη.

Ανάλογα με τις περιπτώσεις χρήσης, τα UDF μπορούν να γραφτούν. Θα δέχεται και θα παράγει διαφορετικούς αριθμούς τιμών εισόδου και εξόδου.

Ο γενικός τύπος UDF δέχεται μία μόνο τιμή εισόδου και παράγει μία τιμή εξόδου. Εάν το UDF χρησιμοποιείται στο ερώτημα, τότε το UDF θα κληθεί μία φορά για κάθε σειρά στο σύνολο δεδομένων αποτελεσμάτων.

Με τον άλλο τρόπο, μπορεί να δεχτεί μια ομάδα τιμών ως είσοδο και να επιστρέψει μια μεμονωμένη τιμή εξόδου επίσης.