ฟังก์ชั่นไฮฟ์: ตัวอย่างในตัว & 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 จะถูกเรียกหนึ่งครั้งสำหรับแต่ละแถวในชุดข้อมูลผลลัพธ์
ในอีกทางหนึ่ง มันสามารถยอมรับกลุ่มของค่าเป็นอินพุตและส่งกลับค่าเอาต์พุตเดี่ยวได้เช่นกัน