HBase สร้างตารางด้วย Java ตัวอย่าง API และเชลล์
⚡ สรุปอย่างชาญฉลาด
HBase จัดเก็บข้อมูลในตาราง และคุณสามารถสร้างและจัดการตารางเหล่านั้นได้สองวิธี: ผ่านทาง Java API ที่ใช้ HTableDescriptหรือ HBaseAdmin หรือโดยตรงใน HBase shell โดยใช้คำสั่ง create

วิธีสร้างตารางใน HBase ด้วย Java API
ใน HBase สามารถสร้างตารางได้สองวิธี: ผ่านทาง Java API และผ่านทาง HBase shell ส่วนนี้จะกล่าวถึง... Java API ซึ่งช่วยให้แอปพลิเคชันสามารถสร้างตารางและโหลดข้อมูลโดยใช้โปรแกรมเป็นส่วนหนึ่งของงานขนาดใหญ่ได้
ตลอด Java API เราสามารถสร้างตารางใน HBase และยังโหลดข้อมูลลงในตารางโดยใช้ Java การเขียนโค้ด สิ่งที่เราตั้งค่าไว้ที่นี่คือ:
- การสร้างการเชื่อมต่อกับ HBase ผ่าน Java API
- การใช้ Eclipse สำหรับ Java การเขียนโค้ด การแก้ไขข้อผิดพลาด และการทดสอบ
ต่อไปนี้เป็นขั้นตอนในการสร้างตารางใน HBase Java API
ขั้นตอนที่ 1) สร้าง Java โครงการใน Eclipse
ในขั้นตอนนี้ เราจะมาสร้าง Java โครงการใน Eclipse สำหรับการเชื่อมต่อ HBase ที่ชื่อว่า “HbaseConnection”
ใหม่ Java หน้าต่างการตั้งค่าโปรเจ็กต์ด้านล่างแสดงขั้นตอนการตั้งค่าโปรเจ็กต์ “HbaseConnection”:
หากเราพิจารณาภาพหน้าจอข้างต้น:
- ระบุชื่อโปรเจ็กต์ในช่องนี้ ในกรณีของเรา ชื่อโปรเจ็กต์คือ “HbaseConnection”
- ทำเครื่องหมายในช่องนี้เพื่อกำหนดตำแหน่งเริ่มต้นในการบันทึก ในที่นี้คือ /home/hduser/work/HbaseConnection
- ทำเครื่องหมายในช่องสำหรับ Java สภาพแวดล้อมที่นี่ ในกรณีนี้ JavaSE-1.7 คือ Java รุ่นที่
- เลือกตัวเลือกสำหรับตำแหน่งที่คุณต้องการบันทึกไฟล์ ในกรณีของเรา เราเลือกตัวเลือกที่สอง “สร้างโฟลเดอร์แยกต่างหากสำหรับไฟล์ต้นฉบับและไฟล์คลาส”
- คลิกปุ่ม "เสร็จสิ้น" ซึ่งจะสร้างโปรเจ็กต์ "HbaseConnection" ขึ้นมา Eclipse และเปิดออก Eclipse หน้าแรก
ขั้นตอนที่ 2) กำหนดค่า Build Path ใน Eclipse
เกี่ยวกับ Eclipse หน้าแรก ให้ทำตามขั้นตอนเหล่านี้เพื่อเปิดการกำหนดค่าเส้นทางการสร้าง:
Right click on project -> Select Build Path -> Configure build path
ภาพหน้าจอด้านล่างแสดงเมนูคลิกขวาที่ใช้ในการเปิดการกำหนดค่าเส้นทางการสร้าง:
จากภาพหน้าจอข้างต้น:
- คลิกขวาที่โปรเจ็กต์
- เลือก Build Path
- เลือก กำหนดค่าเส้นทางการสร้าง (Configure Build Path)
หลังจากคลิก Configure Build Path แล้ว จะเปิดหน้าต่างอีกหน้าต่างหนึ่งขึ้นมา ดังแสดงในภาพหน้าจอด้านล่าง แท็บ Libraries คือที่ที่ไฟล์ JAR ของ HBase และ Hadoop จะถูกเพิ่มเข้าไปในโปรเจ็กต์:
ในขั้นตอนนี้ เราจะเพิ่มไฟล์ JAR ของ HBase ที่เกี่ยวข้องเข้าไป Java โปรเจ็กต์ตามที่แสดงในภาพหน้าจอ
- ไฟล์ JAR สำคัญที่ต้องเพิ่ม: hbase-0.94.8.jar และ hadoop-core-1.1.2.jar
- เข้ามาที่แท็บ "ห้องสมุด"
- กดตัวเลือก "เพิ่มไฟล์ JAR ภายนอก"
- เลือกไฟล์ JAR ที่สำคัญตามต้องการ
- กดปุ่มเสร็จสิ้นเพื่อเพิ่มไฟล์เหล่านี้ลงในโฟลเดอร์ “src” ของ Java โครงการภายใต้การดูแลของห้องสมุด
หลังจากเพิ่มไฟล์ JAR แล้ว ไฟล์เหล่านั้นจะปรากฏอยู่ในตำแหน่ง "src" ของโปรเจ็กต์ ดังแสดงในภาพด้านล่าง:
ไฟล์ JAR ทั้งหมดที่เกี่ยวข้องกับโครงการนี้พร้อมใช้งานกับระบบนิเวศของ Hadoop แล้ว
ขั้นตอนที่ 3) สร้างการเชื่อมต่อ HBase
ในขั้นตอนนี้ เราจะสร้างการเชื่อมต่อกับ HBase โดยใช้ไฟล์ HBaseConnection.java Java การเข้ารหัส
เกี่ยวกับ Eclipse เมนูหลัก เรียกใช้งาน Java โปรแกรมมีขั้นตอนดังนี้: เรียกใช้ -> เรียกใช้ในฐานะ -> Java แอปพลิเคชัน เมนูข้างล่างแสดงโปรแกรมที่กำลังเปิดใช้งาน:
- เลือก Run
- เลือก "เรียกใช้เป็น" Java ใบสมัคร
- โค้ดนี้สร้างการเชื่อมต่อกับ HBase ผ่านทาง Java API
- หลังจากรันโค้ดนี้แล้ว ตาราง “guru99” จะถูกสร้างขึ้นใน HBase โดยมีสองคอลัมน์แฟมิลีชื่อ “education” และ “projects” ในขณะนี้ มีการสร้างเพียงสคีมาว่างเปล่าใน HBase เท่านั้น
โค้ดตัวอย่างด้านล่างนี้แสดงให้เห็นถึงการใช้งาน HTableDescriptหรือเรียกใช้ addFamily เพื่อสร้างโครงสร้างตาราง:
จากภาพหน้าจอข้างต้น เรากำลังดำเนินการฟังก์ชันต่อไปนี้:
- การใช้ HTableDescriptหรือเราสามารถสร้างตาราง “guru99” ใน HBase ได้
- โดยใช้เมธอด addFamily เราจะเพิ่ม "education" และ "projects" เป็นคอลัมน์แฟมิลีให้กับตาราง "guru99"
โค้ดด้านล่างนี้จะสร้างการเชื่อมต่อกับ HBase และสร้างตาราง “guru99” โดยมีสองคอลัมน์แฟมิลี โปรดวางโค้ดนี้ไว้ใต้เอกสาร HBaseConnection.java:
// Place this code inside Hbase connection import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HColumnDescriptor; import org.apache.hadoop.hbase.HTableDescriptor; Import org.apache.hadoop.hbase.client.HBaseAdmin; public class HBaseConnection { public static void main(String[] args) throws IOException { HBaseConfigurationhc = new HBaseConfiguration(new Configuration()); HTableDescriptorht = new HTableDescriptor("guru99"); ht.addFamily( new HColumnDescriptor("education")); ht.addFamily( new HColumnDescriptor("projects")); System.out.println( "connecting" ); HBaseAdminhba = new HBaseAdmin( hc ); System.out.println( "Creating Table" ); hba.createTable( ht ); System.out.println("Done......"); } }
นี่คือโค้ดที่จำเป็นที่คุณต้องใส่ไว้ในไฟล์ HBaseConnection.java ก่อนที่จะรันโปรแกรม Java โครงการ
หลังจากรันโปรแกรมนี้แล้ว โปรแกรมจะสร้างการเชื่อมต่อกับ HBase และสร้างตารางที่มีชื่อคอลัมน์ขึ้นมา
- ชื่อตารางคือ “guru99”
- กลุ่มคอลัมน์ประกอบด้วย “การศึกษา” และ “โครงการ”
ขั้นตอนที่ 4) ตรวจสอบตารางที่สร้างใน HBase
เราสามารถตรวจสอบได้ว่าตาราง “guru99” ถูกสร้างขึ้นด้วยสองคอลัมน์แฟมิลีใน HBase หรือไม่ โดยใช้โหมดเชลล์ของ HBase ด้วยคำสั่ง “list” คำสั่ง “list” จะให้ข้อมูลเกี่ยวกับตารางทั้งหมดที่สร้างขึ้นใน HBase
การเรียกใช้คำสั่ง list ใน HBase shell จะยืนยันตารางใหม่ ดังแสดงด้านล่าง:
- Code ตรวจสอบใน HBase shell โดยการเรียกใช้คำสั่ง “list”
- ถ้าเรารันคำสั่ง “list” มันจะแสดงตารางที่สร้างขึ้นใน HBase ในกรณีของเรา เราจะเห็นว่าตาราง “guru99” ถูกสร้างขึ้นแล้ว
HBase สร้างตารางด้วยเชลล์
นอกจากนี้ Java ด้วย API คุณสามารถสร้างตารางได้โดยตรงจาก HBase shell ซึ่งเป็นวิธีที่เร็วที่สุดในการตั้งค่าตารางสำหรับการทดสอบอย่างรวดเร็ว ไวยากรณ์ในการสร้างตารางใน HBase โดยใช้ shell มีดังนี้:
Syntax: create <tablename>, <columnfamilyname>
ตัวอย่าง:-
hbase(main):001:0> create 'education' ,'guru99' 0 rows(s) in 0.312 seconds =>Hbase::Table – education
ตัวอย่างข้างต้นอธิบายวิธีการสร้างตารางใน HBase โดยใช้ชื่อที่ระบุตามข้อกำหนดสำหรับแต่ละตระกูลคอลัมน์ นอกจากนี้ เรายังสามารถส่งแอตทริบิวต์ระดับตารางบางอย่างเข้าไปได้อีกด้วย
create 'guru99', {NAME=>'Edu', VERSIONS=>213423443}
ในที่นี้ บล็อก {NAME=>'Edu', VERSIONS=>…} กำหนดกลุ่มคอลัมน์ชื่อ “Edu” และจำนวนเวอร์ชันของเซลล์ที่จะเก็บไว้ ตัวเลขจำนวนมากที่แสดงเป็นเพียงตัวอย่าง ในทางปฏิบัติ VERSIONS จะมีค่าเล็กน้อย เช่น 3 หรือ 5
แสดงรายการ อธิบาย และตรวจสอบตาราง HBase
การสร้างตารางเป็นเพียงส่วนแรกของการจัดการตารางใน HBase เท่านั้น เมื่อตาราง “guru99” มีอยู่แล้ว คำสั่งทั่วไปบางคำสั่งจะช่วยให้คุณตรวจสอบและยืนยันสถานะของตารางก่อนที่จะอ่าน เขียน หรือแก้ไขข้อมูล คุณสามารถเรียกใช้คำสั่งทั้งหมดได้จาก... เปลือก HBase.
คำสั่ง list จะแสดงรายการตารางผู้ใช้ทั้งหมดใน HBase:
hbase> list
คำสั่ง describe จะแสดงโครงสร้างของตาราง รวมถึงตระกูลคอลัมน์ และสถานะการเปิดใช้งานในปัจจุบัน:
hbase> describe 'guru99'
คำสั่ง exists ตรวจสอบว่ามีตารางอยู่หรือไม่ และคำสั่ง is_enabled รายงานว่าตารางนั้นสามารถรับการเขียนได้หรือไม่:
hbase> exists 'guru99' hbase> is_enabled 'guru99'
การตรวจสอบแบบอ่านอย่างเดียวเหล่านี้ปลอดภัยที่จะเรียกใช้ได้ทุกเมื่อ เป็นวิธีที่รวดเร็วที่สุดในการยืนยันว่ามีการสร้างตารางอย่างถูกต้อง และตรวจสอบกลุ่มคอลัมน์ก่อนที่จะโหลดข้อมูล
แก้ไขตาราง HBase
โครงสร้างตารางใน HBase จะไม่คงที่หลังจากสร้างเสร็จแล้ว คำสั่ง alter จะเปลี่ยนตระกูลคอลัมน์และแอตทริบิวต์ขอบเขตตารางโดยไม่ต้องสร้างตารางใหม่ ทั้งนี้ขึ้นอยู่กับเวอร์ชัน HBase ของคุณ คุณอาจต้องปิดใช้งานตารางก่อน จากนั้นจึงเรียกใช้คำสั่ง alter และเปิดใช้งานอีกครั้ง
วิธีการเพิ่มกลุ่มคอลัมน์ใหม่ลงในตาราง “guru99”:
hbase> alter 'guru99', {NAME => 'contact'}
วิธีตั้งค่าจำนวนเวอร์ชันที่ชุดคอลัมน์จะเก็บไว้:
hbase> alter 'guru99', NAME => 'education', VERSIONS => 5
วิธีการลบกลุ่มคอลัมน์ออกจากตาราง:
hbase> alter 'guru99', {NAME => 'contact', METHOD => 'delete'}
นอกจากนี้ คุณยังสามารถเปลี่ยนแปลงคุณสมบัติขอบเขตของตารางได้ ตัวอย่างเช่น กำหนดให้ตารางเป็นแบบอ่านอย่างเดียว หรือตั้งค่าขนาดไฟล์สูงสุดของภูมิภาคเป็น 128 MB:
hbase> alter 'guru99', READONLY hbase> alter 'guru99', MAX_FILESIZE => '134217728'
เนื่องจากคำสั่ง alter จะเขียนทับโครงสร้างข้อมูล ดังนั้นควรวางแผนการเปลี่ยนแปลงอย่างระมัดระวังบนตารางที่ใช้งานจริง และยืนยันผลลัพธ์อีกครั้งด้วยคำสั่ง describe
ปิดใช้งาน เปิดใช้งาน และลบตาราง HBase
ในการลบตารางหรือทำการเปลี่ยนแปลงบางอย่าง HBase จำเป็นต้องปิดใช้งานตารางนั้นก่อน การปิดใช้งานจะทำให้ตารางนั้นออฟไลน์ ทำให้ไม่มีไคลเอนต์ใดสามารถอ่านหรือเขียนข้อมูลลงไปได้ ซึ่งทำให้การเปลี่ยนแปลงโครงสร้างมีความปลอดภัย
ปิดใช้งานตาราง และตรวจสอบสถานะด้วย is_disabled:
hbase> disable 'guru99' hbase> is_disabled 'guru99'
เปิดใช้งานตารางอีกครั้งเพื่อดำเนินการอ่านและเขียนข้อมูลต่อ:
hbase> enable 'guru99'
ต้องปิดใช้งานตารางก่อนจึงจะสามารถลบได้ ลบping คำสั่งนี้จะลบตารางและข้อมูลทั้งหมดในตารางอย่างถาวร ดังนั้นโปรดใช้ด้วยความระมัดระวัง:
hbase> disable 'guru99' hbase> drop 'guru99'
หากต้องการลบหลายตารางพร้อมกัน คำสั่ง drop_all จะลบทุกตารางที่มีชื่อตรงกับนิพจน์ปกติ คำสั่ง create, alter, disable, enable และ drop ครอบคลุมวงจรชีวิตทั้งหมดของตาราง การจัดการข้อมูล ในตาราง HBase






