
หลังจากเรียนรู้ว่า Big Data ในภาพกว้างมาแล้ว คงจะเข้าใจกันขึ้นว่าภาพรวมของ Hadoop Ecosystem เป็นยังไงและจะลองเล่นกับ Hadoop บนเครื่องตัวเองอย่างไรกันแล้ว … ถ้ายังไม่ได้อ่าน ไปอ่านเพิ่มได้ที่นี้เลย The Big Data World – ตอนที่หนึ่ง 🙂
ทีนี้เรามาเจาะลึกถึงการใช้งานกับ Hadoop กันเถอะ … ซึ่งวันนี้เราจะมาเรียนรู้เรื่องของ Hive กัน โดยขอย้อนกลับไปที่ ecosystem นิดนึงน่ะ


จะเห็นว่า Hive ถูกสร้างขึ้นบน MapReduce นั้นหมายถึงมันเป็น tool ตัวนึงที่สร้างขึ้นเพื่อดึงข้อมูลจาก HDFS เหมือนกับ MapReduce เนี่ยแหละ แต่ๆๆสิ่งที่พิเศษกว่าคือมันออกแบบมาให้เรา query ข้อมูลจาก HDFS ด้วย Hive Query Language Statement ที่มีลักษณะเหมือนกับ SQL statement !!!! 🙂
แปลว่าต่อจากนี้การจะดึงข้อมูลจาก Hadoop เราไม่ต้องทนทุกข์ทรมารด้วยการเขียนโปรแกรมยาวๆแบบข้างล่างนี้แล้ว

เราแค่ใช้ Hive query language ที่หน้าตาเหมือน SQL ดึงข้อมูลออกมาได้เลย แบบนี้

มันจะมีความแตกต่างกับ SQL ของแต่ละเจ้าอยู่บ้าง แต่ไม่มากนัก เรียนรู้กันได้ ง่ายกว่าเขียน MapReduce แน่นอน 🙂
ลองเล่นของจริงใน Sandbox กันดีกว่า
คนจริงไม่พูดเยอะเนอะ ไปลองเล่น Hive ของจริงกันใน Hortonworks Sandbox กันเลยดีกว่า
ถ้าได้ลองอ่านบทความที่แล้ว The Big Data World – ตอนที่หนึ่ง จะทราบแล้วเนอะ ว่าเราลง Hadoop เพื่อเล่นบนเครื่องของเราเองยังไง คราวนี้มาลองใช้ Hive กันบน Sandbox ตัวนั้นกันเลยดีกว่า
โดยวิธีการจะแบ่งเป็นสองส่วนหลักๆก็คือ
- Import data เข้า Hadoop
- Query data ด้วย Hive
วิธีการ import data เข้า Hadoop
เริ่มต้นขั้นแรกเลยเราไปที่ Hive ผ่านหน้า UI ของตัว Sandbox ก่อน โดย default password ของระบบ sandbox ก็คือ maria_dev ทั้ง username และ password 🙂

ส่วนข้อมูลที่เราจะเอามาใช้เล่นกันในวันนี้ก็คือข้อมูลจาก Movielens ซึ่งเป็นข้อมูลที่รวบรวมเกี่ยวกับ rating ของรายชื่อหนังไว้ โดยเมื่อโหลดลงมาแล้ว จะมีหน้าตายังงี้

โดยการจะเอาข้อมูลอะไรก็ตามเข้าไปใน Hadoop เราก็ต้องมีความจําเป็นที่จะต้องรู้ก่อนว่า ข้อมูลอยู่ในรูปแบบไหน มี field delimiter ยังไง เพราะมันจะได้ extract ข้อมูลได้ถูกต้อง เช่นตัวอย่างข้างล่างจาก u.data file ที่เรา Download ลงมา จะเห็นว่ามันใช้ TAB เป็นตัวแบ่งของข้อมูลนั้นเอง เพราะฉะนั้นเวลา Import data เข้าไปก็ต้องเลือก TAB เป็น field delimeter 🙂

หลังจากเราโหลดข้อมูลมาแล้วให้ไปที่ Tab ใน hive ที่เขียนว่า Upload Table

แล้วเราก็เลือก config field delimeter จากปุ่ม setting ที่ file type ตามข้อมูลที่เรามี ซึ่งก็คือ TAB นั้นเอง

หลังจากนั้นก็จะได้ข้อมูลออกมาหน้าตาแบบรูปข้างล่างนี้แล้ววววววววว ซึ่งนี้ก็คือ 1 database นั้นเอง 🙂 ไม่ยากเลยใช่มั้ยล่ะ

วิธีการ Query ด้วย Hive
อย่างที่เราคุยกัน การจัดการ Hadoop Data ด้วย hive เป็นวิธีการที่เราใช้ Hive Query command ที่มีลักษณะเหมือน SQL เลย เพราะฉะนั้นมันจะทําให้เราทํางานได้ง่ายมาก ซึ่งเราสามารถลองกับ table ที่เราพึ่ง upload เข้าไปได้เลย โดยการเลือก Tab Query ในหน้าของ Hive

หลังจากนั้นจะเห็นว่าเรามี Database อยู่ 3 ลูกซึ่งก็คือ
- default
- foodmart
- xademo
และจะมี table ที่เราพึ่ง upload เข้าไปอยู่ใน default นั้นเอง (ซึ่งของผมตั้งชื่อว่า rating – u.data และ movies – u.items)
เราสามารถมอง csv file เมื่อกี้ที่เรา Upload เข้าไปเป็น table ใน database และ query เล่นได้ ตามใจต้องการล่ะ เช่น จะนับจํานวนของ data ทั้งหมดก็ count ได้ตามปกติแบบที่คุ้นมือกัน 🙂

เห็นมะ? ว่า Hadoop ไม่ได้ยากอะไรเลย? แค่มองว่าเป็น Database ก้อนใหญ่ๆก้อนนึง ที่เราเอาข้อมูลไปพักไว้เฉยๆ คําถามที่สําคัญอย่างที่บอกคือ จะเอา Big Data ไปประยุกต์ทําอะไรออกมาตั้งหาก !!!!
Hive Query Command ที่น่าสนใจ
สําหรับคนแรกๆที่เข้ามาหัดเล่นกับ Hive อาจจะคิดว่า SQL ที่ใช้มันมีแค่ selecting, filtering และ aggregate แค่นั้น แต่จริงๆแล้ว Hive query command มีดีกว่า select,join,distinct,count มากๆ
มันมีความสามารถทั้ง Logical, Datetime, Mathematics หรือแม้แต่ extract json / array type ที่มีใน Hadoop ออกมา result table ให้เราได้ 🙂
ซึ่งคู่มือทั้งหมดสามารถอ่านได้จาก LanguageManual UDF ได้เลย ซึ่งวันนี้จะขอยกตัวอย่างที่ได้ใช้งานกันบ่อยๆออกมาให้ดูกัน
[table “” not found /]นี้แค่นํ้าจิ้ม ยังมีอีกเยอะที่ให้เราเอามาเขียน query เพื่อใช้ในการเอาข้อมูลมาแสดง 🙂
สรุป
จําง่ายๆเลย Hive คือ tools ไว้ในการดึงข้อมูลของ Hadoop ขึ้นมาในรูปแบบของ SQL โดยมี Hive Operators and User-Defined Functions (UDFs) ให้ใช้อย่างมากมายตามแบบข้างบน
ลองฝึกเล่นกับ Sandbox ดูจะรู้ว่ามันไม่ยากเลย