ฟังก์ชั่นไฮฟ์: ตัวอย่างในตัว & UDF [ฟังก์ชั่นที่กำหนดโดยผู้ใช้]


ฟังก์ชันถูกสร้างขึ้นเพื่อจุดประสงค์เฉพาะในการดำเนินการต่างๆ เช่น คณิตศาสตร์ เลขคณิต ตรรกะ และเชิงสัมพันธ์กับตัวดำเนินการของชื่อคอลัมน์ของตาราง

ฟังก์ชั่น Built-in

เหล่านี้เป็นฟังก์ชันที่มีอยู่ใน Hive อยู่แล้ว ขั้นแรก เราต้องตรวจสอบข้อกำหนดของแอปพลิเคชัน จากนั้นเราจึงสามารถใช้ฟังก์ชันในตัวเหล่านี้ในแอปพลิเคชันของเราได้ เราสามารถเรียกใช้ฟังก์ชันเหล่านี้ได้โดยตรงในแอปพลิเคชันของเรา

มีการกล่าวถึงรูปแบบและประเภทต่างๆ ในส่วนต่อไปนี้

ประเภทของฟังก์ชันในตัวใน HIVE

  • ฟังก์ชั่นการรวบรวม
  • ฟังก์ชั่นวันที่
  • ฟังก์ชันทางคณิตศาสตร์
  • ฟังก์ชันแบบมีเงื่อนไข
  • ฟังก์ชันสตริง
  • อื่น ๆ. ฟังก์ชั่น

ฟังก์ชั่นการรวบรวม

ฟังก์ชั่นเหล่านี้ใช้สำหรับคอลเลกชัน คอลเลกชันหมายถึงการจัดกลุ่มองค์ประกอบและการส่งคืนองค์ประกอบเดี่ยวหรืออาร์เรย์ขึ้นอยู่กับประเภทการส่งคืนที่ระบุในชื่อฟังก์ชัน

ประเภทผลตอบแทน ชื่อฟังก์ชั่น Descriptไอออน
INT ขนาด(แผนที่ - มันจะดึงข้อมูลและให้หมายเลขส่วนประกอบในประเภทแผนที่
INT ขนาด(อาร์เรย์ - มันจะดึงข้อมูลและให้หมายเลของค์ประกอบในประเภทอาร์เรย์
อาร์เรย์ Map_keys(แผนที่ - มันจะดึงข้อมูลและให้อาร์เรย์ที่มีคีย์ของแผนที่อินพุต ที่นี่อาร์เรย์อยู่ในแบบไม่เรียงลำดับ
อาร์เรย์ Map_values(แผนที่ - มันจะดึงข้อมูลและให้อาร์เรย์ที่มีค่าของแผนที่อินพุต ที่นี่อาร์เรย์อยู่ในแบบไม่เรียงลำดับ
อาร์เรย์ Sort_array(อาร์เรย์ - เรียงลำดับอาร์เรย์อินพุตตามลำดับจากน้อยไปมากของอาร์เรย์และองค์ประกอบแล้วส่งคืน

ฟังก์ชั่นวันที่

สิ่งเหล่านี้ใช้เพื่อดำเนินการจัดการวันที่และการแปลงประเภทวันที่จากประเภทหนึ่งไปเป็นอีกประเภทหนึ่ง:

ชื่อฟังก์ชั่น ประเภทผลตอบแทน Descriptไอออน
Unix_ประทับเวลา() bigint เราจะได้กระแส ยูนิกซ์ การประทับเวลาเป็นวินาที
To_date (ประทับเวลาสตริง) เชือก มันจะดึงข้อมูลและให้ส่วนวันที่ของสตริงการประทับเวลา:
ปี (วันที่สตริง) INT มันจะดึงข้อมูลและให้ส่วนปีของวันที่หรือสตริงการประทับเวลา
ไตรมาส (วันที่/เวลา/สตริง) INT มันจะดึงข้อมูลและให้ไตรมาสของปีเป็นวันที่ เวลาประทับ หรือสตริงในช่วง 1 ถึง 4
เดือน (วันที่สตริง) INT จะให้ส่วนของเดือนของวันที่หรือสตริงการประทับเวลา
ชั่วโมง (วันที่สตริง) INT มันจะดึงข้อมูลและระบุชั่วโมงของการประทับเวลา
นาที (วันที่สตริง) INT มันจะดึงข้อมูลและให้นาทีของการประทับเวลา
Date_sub (วันที่เริ่มต้นสตริง, int days) เชือก มันจะดึงข้อมูลและให้ลบจำนวนวันถึงวันที่เริ่มต้น
วันที่ปัจจุบัน ข้อมูล มันจะดึงข้อมูลและให้วันที่ปัจจุบันเมื่อเริ่มการประเมินแบบสอบถาม
LAST _day (วันที่สตริง) เชือก มันจะดึงข้อมูลและบอกวันสุดท้ายของเดือนที่เป็นวันที่นั้น
trunc (วันที่สตริง รูปแบบสตริง) เชือก มันจะดึงข้อมูลและให้วันที่ถูกตัดทอนเป็นหน่วยที่ระบุตามรูปแบบ

รูปแบบที่รองรับในสิ่งนี้:

เดือน/จันทร์/ดด ปี/ปปปป/ปป

ฟังก์ชันทางคณิตศาสตร์

ฟังก์ชันเหล่านี้ใช้สำหรับวิชาคณิตศาสตร์ Operaสิ่งต่างๆ แทนที่จะสร้าง UDF เรามีฟังก์ชันทางคณิตศาสตร์ที่ฝังอยู่ใน Hive

ชื่อฟังก์ชั่น ประเภทผลตอบแทน Descriptไอออน
รอบ(Xคู่) ซ้อน มันจะดึงข้อมูลและส่งกลับค่า BIGINT ที่ปัดเศษของ X
รอบ(DOUBLE X, INT d) ซ้อน มันจะดึงข้อมูลและส่งกลับค่า X ที่ปัดเศษเป็นทศนิยม d ตำแหน่ง
รอบ(ดับเบิลเอ็กซ์) ซ้อน มันจะดึงและส่งกลับค่า BIGINT ที่ปัดเศษของ X โดยใช้โหมดการปัดเศษ HALF_EVEN
พื้น(ดับเบิลเอ็กซ์) บิ๊กอินท์ มันจะดึงและส่งกลับค่า BIGINT สูงสุดที่เท่ากับหรือน้อยกว่าค่า X
เพดาน(คู่ a), เพดาน(คู่ a) บิ๊กอินท์ มันจะดึงและส่งกลับค่า BIGINT ขั้นต่ำที่เท่ากับหรือมากกว่าค่า X
แรนด์ (), แรนด์ (เมล็ด INT) ซ้อน มันจะดึงและส่งกลับตัวเลขสุ่มที่กระจายสม่ำเสมอตั้งแต่ 0 ถึง 1

ฟังก์ชันแบบมีเงื่อนไข

ฟังก์ชันเหล่านี้ใช้สำหรับการตรวจสอบค่าตามเงื่อนไข

ชื่อฟังก์ชั่น ประเภทผลตอบแทน Descriptไอออน
ถ้า (เงื่อนไขการทดสอบบูลีน, T valueTrue, T valueFalseOrNull) T มันจะดึงข้อมูลและให้ค่า True เมื่อใด
เงื่อนไขการทดสอบเป็นจริง
ให้ค่าเป็น False หรือ Null ในกรณีอื่น
ไม่เป็นโมฆะ(X) บูลีน มันจะดึงข้อมูลและให้ข้อมูลเป็นจริงหาก X เป็นค่า NULL และให้ข้อมูลเท็จหากไม่เป็นเช่นนั้น
ไม่ใช่ค่าว่าง(X ) บูลีน จะดึงข้อมูลและแสดงผลจริงหาก X ไม่ใช่ค่า NULL และแสดงผลเท็จหากไม่ใช่ค่า NULL

ฟังก์ชันสตริง

การจัดการสตริงและการดำเนินการสตริงสามารถเรียกใช้ฟังก์ชันเหล่านี้ได้

ชื่อฟังก์ชั่น ประเภทผลตอบแทน Descriptไอออน
ย้อนกลับ (สตริง X) เชือก มันจะให้สตริงกลับด้านของ X
rpad(สตริง str, ความยาว int, แพดสตริง) เชือก มันจะดึงข้อมูลและให้ str ซึ่งบุด้านขวาด้วยแผ่นตามความยาว (ค่าจำนวนเต็ม)
rtrim (สตริง X) เชือก มันจะดึงข้อมูลและส่งคืนสตริงที่เกิดจากการตัดแต่งช่องว่างจากส่วนท้าย (ด้านขวามือ) ของ X
ตัวอย่างเช่น, rtrim(' results ') ผลลัพธ์ใน ' results'
พื้นที่(INT n) เชือก มันจะดึงข้อมูลและให้สตริงที่มีช่องว่าง n
แยก (STRING str, STRING ตบเบา ๆ ) แถว แยก str รอบ pat (pat เป็นนิพจน์ทั่วไป)
Str_to_map(ข้อความ[, ตัวคั่น1, ตัวคั่น2]) แผนที่ มันจะแยกข้อความออกเป็นคู่คีย์-ค่าโดยใช้ตัวคั่นสองตัว

UDF (ฟังก์ชันที่ผู้ใช้กำหนด)

ใน Hive ผู้ใช้สามารถกำหนดฟังก์ชันของตัวเองเพื่อตอบสนองความต้องการของลูกค้าได้ สิ่งเหล่านี้เรียกว่า UDF ใน Hive ฟังก์ชันที่ผู้ใช้กำหนดเขียนไว้ Java สำหรับโมดูลเฉพาะ

UDF บางตัวได้รับการออกแบบมาเป็นพิเศษเพื่อให้โค้ดสามารถนำกลับมาใช้ใหม่ในกรอบงานแอปพลิเคชันได้ ผู้พัฒนาจะพัฒนาฟังก์ชั่นเหล่านี้ใน Java และรวม UDF เหล่านั้นเข้ากับ Hive

ในระหว่างการดำเนินการค้นหา นักพัฒนาสามารถใช้โค้ดได้โดยตรง และ UDF จะส่งคืนเอาต์พุตตามงานที่ผู้ใช้กำหนด มันจะให้ประสิทธิภาพสูงในแง่ของการเข้ารหัสและการดำเนินการ

ตัวอย่างเช่น สำหรับการแยกสตริง เราไม่มีฟังก์ชันที่กำหนดไว้ล่วงหน้าใน Hive สำหรับสิ่งนี้ เราสามารถเขียน Stem UDF ลงไปได้ Javaเมื่อใดก็ตามที่เราต้องการฟังก์ชัน Stem เราก็สามารถเรียก Stem UDF ใน Hive ได้โดยตรง

ฟังก์ชันการทำงานของต้นกำเนิดในที่นี้หมายถึงการได้รับคำจากคำรากศัพท์ มันเหมือนกับว่าอัลกอริทึมการกั้นลดคำว่า "ความปรารถนา" "ความปรารถนา" และ "ความปรารถนา" ลงเหลือรากศัพท์ของคำว่า "ความปรารถนา" สำหรับการดำเนินการฟังก์ชันประเภทนี้ เราสามารถเขียน UDF ลงไปได้ Java และบูรณาการเข้ากับ รัง.

สามารถเขียน UDF ได้ขึ้นอยู่กับกรณีการใช้งาน โดยจะยอมรับและสร้างค่าอินพุตและเอาต์พุตที่แตกต่างกัน

UDF ประเภททั่วไปจะยอมรับค่าอินพุตเดียวและสร้างค่าเอาต์พุตเดี่ยว หากใช้ UDF ในการสืบค้น UDF จะถูกเรียกหนึ่งครั้งสำหรับแต่ละแถวในชุดข้อมูลผลลัพธ์

ในอีกทางหนึ่ง มันสามารถยอมรับกลุ่มของค่าเป็นอินพุตและส่งกลับค่าเอาต์พุตเดี่ยวได้เช่นกัน