คำสั่ง HBase Shell พร้อมตัวอย่าง
⚡ สรุปอย่างชาญฉลาด
คำสั่งเชลล์ของ HBase ช่วยให้คุณจัดการตารางและข้อมูลได้โดยตรงจากพรอมต์แบบโต้ตอบ โดยแบ่งออกเป็นคำสั่งทั่วไป คำสั่งจัดการตาราง เช่น สร้างและลบ คำสั่งจัดการข้อมูล เช่น ใส่และดึงข้อมูล และคำสั่งจำลองคลัสเตอร์
วิธีใช้งาน HBase โดยใช้คำสั่ง Shell และ Java API
หลังจากติดตั้ง HBase บน Hadoop สำเร็จแล้ว เราจะได้เชลล์แบบโต้ตอบเพื่อเรียกใช้คำสั่งต่างๆ และดำเนินการหลายอย่าง โดยใช้คำสั่งเหล่านี้ เราสามารถดำเนินการหลายอย่างกับตารางข้อมูล ซึ่งจะช่วยเพิ่มประสิทธิภาพในการจัดเก็บข้อมูลและเพิ่มความยืดหยุ่นในการโต้ตอบกับไคลเอ็นต์
เราสามารถโต้ตอบกับ HBase ได้สองวิธี:
- โหมดเชลล์แบบโต้ตอบของ HBase และ
- ตลอด Java API
ใน HBase โหมดเชลล์แบบโต้ตอบ (Interactive Shell Mode) ใช้สำหรับการโต้ตอบกับ HBase ในด้านการดำเนินการกับตาราง การจัดการตาราง และการสร้างแบบจำลองข้อมูล โดยใช้ Java โมเดล API ช่วยให้เราสามารถดำเนินการกับตารางและข้อมูลทุกประเภทใน HBase ได้ เราสามารถโต้ตอบกับ HBase ได้โดยใช้วิธีการทั้งสองนี้ ความแตกต่างเพียงอย่างเดียวระหว่างสองวิธีนี้คือ... Java API ใช้ Java โหมดการเขียนโค้ดเพื่อเชื่อมต่อกับ HBase ในขณะที่โหมดเชลล์จะใช้คำสั่งเชลล์ในการเชื่อมต่อกับ HBase
ก่อนที่เราจะดำเนินการต่อ ขอสรุปข้อมูลเบื้องต้นเกี่ยวกับ HBase สั้นๆ ดังนี้:
- HBase ใช้ Hadoop HBase เป็นระบบจัดเก็บข้อมูลที่ใช้เก็บข้อมูลปริมาณมาก โดย HBase ประกอบด้วยมาสเตอร์เซิร์ฟเวอร์และรีจิสเตอร์เซิร์ฟเวอร์
- ข้อมูลที่จะจัดเก็บใน HBase จะอยู่ในรูปแบบของภูมิภาค (regions) และภูมิภาคเหล่านี้จะถูกแบ่งย่อยและจัดเก็บไว้ในเซิร์ฟเวอร์ภูมิภาคหลายแห่ง
- คำสั่งเชลล์เหล่านี้ช่วยให้โปรแกรมเมอร์สามารถกำหนดโครงสร้างตารางและดำเนินการกับข้อมูลได้โดยใช้การโต้ตอบในโหมดเชลล์อย่างสมบูรณ์
- ไม่ว่าเราจะใช้คำสั่งใด คำสั่งนั้นก็จะสะท้อนให้เห็นในโมเดลข้อมูลของ HBase
- เราใช้คำสั่งเชลล์ของ HBase ในตัวแปลสคริปต์ของระบบปฏิบัติการ เช่น เชลล์ Bash
- Bash shell เป็นตัวแปลคำสั่งเริ่มต้นสำหรับระบบส่วนใหญ่ ลินุกซ์ และระบบปฏิบัติการ Unix
- HBase เวอร์ชันขั้นสูงมีคำสั่งเชลล์ที่ใช้การอ้างอิงเชิงวัตถุแบบ JRuby สำหรับตาราง
- ตัวแปรอ้างอิงตารางสามารถใช้เพื่อดำเนินการกับข้อมูลในโหมดเชลล์ของ HBase ได้
ตัวอย่างเช่น:
- ในบทเรียนนี้ เราได้สร้างตารางขึ้นมา โดยที่ 'education' แทนชื่อตาราง และตรงกับชื่อคอลัมน์ “guru99”
- ในบางคำสั่ง “guru99” นั้นเองอาจแทนชื่อตารางได้
คำสั่งทั่วไป
ใน HBase คำสั่งทั่วไปจะถูกแบ่งออกเป็นหมวดหมู่ดังต่อไปนี้:
- สถานะ
- เวอร์ชั่น
- Table_help ( สแกน วาง รับ วาง ปิดการใช้งาน ฯลฯ )
- ฉันเป็นใคร
ในการเข้าสู่คำสั่งเชลล์ของ HBase ขั้นแรกเราต้องเรียกใช้โค้ดตามที่ระบุไว้ด้านล่าง
hbase Shell
เมื่อเข้าสู่ HBase shell แล้ว เราสามารถเรียกใช้คำสั่ง shell ทั้งหมดที่กล่าวถึงด้านล่างได้ ด้วยความช่วยเหลือของคำสั่งเหล่านี้ เราสามารถดำเนินการกับตารางทุกประเภทในโหมด HBase shell ได้ พร้อมท์ shell แบบโต้ตอบจะปรากฏดังที่แสดงด้านล่าง:
ให้เราดูคำสั่งเหล่านี้ทั้งหมดและการใช้งานทีละคำสั่งพร้อมตัวอย่าง
สถานะ
Syntax:status
คำสั่งนี้จะแสดงรายละเอียดเกี่ยวกับสถานะของระบบ เช่น จำนวนเซิร์ฟเวอร์ในคลัสเตอร์ จำนวนเซิร์ฟเวอร์ที่ใช้งานอยู่ และค่าโหลดเฉลี่ย นอกจากนี้ คุณยังสามารถส่งพารามิเตอร์เฉพาะเจาะจงได้ ขึ้นอยู่กับว่าคุณต้องการทราบรายละเอียดของสถานะระบบมากน้อยเพียงใด พารามิเตอร์สามารถเป็น 'summary', 'simple' หรือ 'detailed' โดยค่าเริ่มต้นจะเป็น "summary"
ด้านล่างนี้ เราได้แสดงวิธีการส่งพารามิเตอร์ต่างๆ ไปยังคำสั่งสถานะ หากเราสังเกตภาพหน้าจอด้านล่าง เราจะเข้าใจได้ดียิ่งขึ้น
hbase(main):001:0>status hbase(main):002:0>status 'simple' hbase(main):003:0>status 'summary' hbase(main):004:0> status 'detailed'
ผลลัพธ์สถานะแสดงอยู่ด้านล่าง:
เมื่อเรารันคำสั่งสถานะนี้ มันจะแสดงข้อมูลเกี่ยวกับจำนวนเซิร์ฟเวอร์ที่ใช้งานอยู่ เซิร์ฟเวอร์ที่เสีย และภาระงานเฉลี่ยของเซิร์ฟเวอร์ ในภาพหน้าจอนี้แสดงข้อมูล เช่น เซิร์ฟเวอร์ที่ใช้งานอยู่ 1 เครื่อง เซิร์ฟเวอร์ที่เสีย 1 เครื่อง และภาระงานเฉลี่ย 7.0000
เวอร์ชั่น
Syntax: version
ผลลัพธ์ของเวอร์ชันแสดงอยู่ด้านล่าง:
- คำสั่งนี้จะแสดงเวอร์ชัน HBase ที่ใช้งานอยู่ในปัจจุบันในโหมดคำสั่ง
- หากคุณรันคำสั่ง version จะแสดงผลลัพธ์ดังที่แสดงด้านบน
ช่วยตาราง
Syntax:table_help
ผลลัพธ์จากคำสั่ง table_help แสดงอยู่ด้านล่าง:
คำสั่งนี้จะแนะนำ:
- คำสั่งอ้างอิงตารางคืออะไร และวิธีการใช้งาน
- จะแสดงวิธีการใช้งานคำสั่งต่างๆ ของ HBase shell และไวยากรณ์ของคำสั่งเหล่านั้น
- ในภาพหน้าจอข้างต้น แสดงไวยากรณ์ของคำสั่ง "create" และ "get_table" พร้อมวิธีการใช้งาน เราสามารถจัดการตารางผ่านคำสั่งเหล่านี้ได้หลังจากที่สร้างตารางใน HBase แล้ว
- มันจะแสดงคำสั่งสำหรับการจัดการตาราง เช่น put, get และข้อมูลคำสั่งอื่นๆ ทั้งหมด
whoami
Syntax: Whoami
ผลลัพธ์จากคำสั่ง whoami แสดงอยู่ด้านล่าง:
คำสั่ง “whoami” นี้ใช้สำหรับเรียกดูข้อมูลผู้ใช้ HBase ปัจจุบันจากคลัสเตอร์ HBase โดยจะแสดงข้อมูลต่างๆ เช่น:
- กลุ่มต่างๆ ที่มีอยู่ใน HBase
- ข้อมูลผู้ใช้ ตัวอย่างเช่น ในกรณีนี้ "hduser" หมายถึงชื่อผู้ใช้ตามที่แสดงในภาพหน้าจอ
TTL(Time To Live) – คุณสมบัติ
ใน HBase สามารถตั้งค่าคอลัมน์แฟมิลีให้มีค่าเวลาเป็นวินาทีโดยใช้ TTL ได้ HBase จะลบแถวโดยอัตโนมัติเมื่อถึงเวลาหมดอายุ คุณสมบัตินี้มีผลกับทุกเวอร์ชันของแถว แม้แต่เวอร์ชันปัจจุบันก็ตาม
เวลา TTL ที่เข้ารหัสใน HBase สำหรับแถวนั้นระบุเป็นเวลา UTC คุณลักษณะนี้ใช้กับคำสั่งการจัดการตาราง ความแตกต่างที่สำคัญระหว่างการจัดการ TTL และ TTL ของตระกูลคอลัมน์มีดังต่อไปนี้:
- TTL ของเซลล์จะแสดงเป็นหน่วยมิลลิวินาทีแทนที่จะเป็นวินาที
- ค่า TTL ของเซลล์ไม่สามารถยืดอายุการใช้งานที่มีประสิทธิภาพของเซลล์ให้เกินกว่าการตั้งค่า TTL ระดับ Column Family ได้
คำสั่งการจัดการตาราง
คำสั่งเหล่านี้จะช่วยให้นักโปรแกรมสามารถสร้างตารางและโครงสร้างตารางที่มีแถวและคอลัมน์ได้ คำสั่งการจัดการตารางมีดังต่อไปนี้:
- สร้างบัญชีตัวแทน
- รายการ
- บรรยาย
- ปิดการใช้งาน
- ปิดการใช้งาน_ทั้งหมด
- ทำให้สามารถ
- Enable_all
- หล่น
- ดรอป_ทั้งหมด
- แสดง_ตัวกรอง
- เปลี่ยนแปลง
- เปลี่ยนสถานะ
เรามาดูตัวอย่างการใช้งานคำสั่งต่างๆ ใน HBase กัน
สร้างบัญชีตัวแทน
Syntax: create <tablename>, <columnfamilyname>
ตัวอย่าง:-
hbase(main):001:0> create 'education' ,'guru99' 0 rows(s) in 0.312 seconds =>Hbase::Table – education
ผลลัพธ์ของคำสั่งสร้างแสดงอยู่ด้านล่าง:
ตัวอย่างข้างต้นอธิบายวิธีการสร้างตารางใน HBase โดยใช้ชื่อที่ระบุตามข้อกำหนดสำหรับแต่ละตระกูลคอลัมน์ นอกจากนี้ เรายังสามารถส่งแอตทริบิวต์ระดับตารางบางอย่างเข้าไปได้ด้วย เพื่อตรวจสอบว่าตาราง 'education' ถูกสร้างขึ้นหรือไม่ เราใช้คำสั่ง "list" ด้านล่าง ดูเพิ่มเติม การสร้างตาราง HBase ด้วย Java และเปลือกหอย.
รายการ
Syntax:list
รายการผลลัพธ์แสดงอยู่ด้านล่าง:
- คำสั่ง “list” จะแสดงตารางทั้งหมดที่มีอยู่หรือถูกสร้างขึ้นใน HBase
- ผลลัพธ์ที่แสดงในภาพหน้าจอข้างต้นแสดงตารางที่มีอยู่แล้วใน HBase ในขณะนี้
- ในภาพหน้าจอนี้ แสดงให้เห็นว่ามีตารางทั้งหมด 8 ตารางอยู่ใน HBase
- เราสามารถกรองค่าผลลัพธ์จากตารางได้โดยการส่งพารามิเตอร์นิพจน์ปกติ (regular expression) ที่เป็นตัวเลือกเพิ่มเติม
บรรยาย
Syntax:describe <table name>
hbase(main):010:0>describe 'education'
ผลลัพธ์ที่ได้จากการอธิบายแสดงอยู่ด้านล่าง:
คำสั่งนี้อธิบายตารางที่มีชื่อ
- ข้อมูลนี้จะให้รายละเอียดเพิ่มเติมเกี่ยวกับตระกูลคอลัมน์ที่มีอยู่ในตารางที่กล่าวถึง
- ในกรณีของเรา มันแสดงคำอธิบายของตาราง "การศึกษา"
- ข้อมูลที่ได้จะประกอบด้วยชื่อตารางพร้อมกลุ่มคอลัมน์ ตัวกรองที่เกี่ยวข้อง เวอร์ชัน และรายละเอียดอื่นๆ เพิ่มเติม
ปิดการใช้งาน
Syntax: disable <tablename>
hbase(main):011:0>disable 'education'
ผลลัพธ์การปิดใช้งานแสดงอยู่ด้านล่าง:
- คำสั่งนี้จะเริ่มปิดใช้งานตารางที่ระบุชื่อไว้
- หากต้องการลบหรือยกเลิกตาราง จะต้องปิดใช้งานตารางนั้นก่อน
ในภาพหน้าจอด้านบน เราได้ปิดใช้งานตารางข้อมูลการศึกษาแล้ว
ปิดการใช้งาน_ทั้งหมด
Syntax: disable_all<"matching regex"
- คำสั่งนี้จะปิดการใช้งานตารางทั้งหมดที่ตรงกับ regex ที่กำหนด
- วิธีการใช้งานเหมือนกับคำสั่ง drop ทุกประการ (ยกเว้นการเพิ่ม regex สำหรับการจับคู่)
- เมื่อปิดใช้งานตารางแล้ว ผู้ใช้จะสามารถลบตารางออกจาก HBase ได้
- ก่อนที่จะลบหรือทิ้งping หากต้องการใช้งานตาราง ควรปิดใช้งานก่อน
ทำให้สามารถ
Syntax: enable <tablename>
hbase(main):012:0>enable 'education'
ผลลัพธ์การเปิดใช้งานแสดงอยู่ด้านล่าง:
- คำสั่งนี้จะเริ่มเปิดใช้งานตารางที่ระบุชื่อ
- ไม่ว่าตารางใดจะถูกปิดใช้งาน หากต้องการกู้คืนให้กลับสู่สถานะเดิม เราสามารถใช้คำสั่งนี้ได้
- หากตารางถูกปิดใช้งานในครั้งแรกและไม่ได้ถูกลบหรือยกเลิก และหากเราต้องการนำตารางที่ถูกปิดใช้งานนั้นกลับมาใช้ใหม่ เราจะต้องเปิดใช้งานตารางนั้นโดยใช้คำสั่งนี้
- ในภาพหน้าจอด้านบน เรากำลังเปิดใช้งานตาราง "การศึกษา"
show_filters
Syntax: show_filters
ผลลัพธ์จากคำสั่ง show_filters แสดงอยู่ด้านล่าง:
คำสั่งนี้จะแสดงตัวกรองทั้งหมดที่มีอยู่ใน HBase เช่น ColumnPrefixFilter, TimestampsFilter, PageFilter, FamilyFilter เป็นต้น
หล่น
Syntax:drop <table name>
hbase(main):017:0>drop 'education'
ผลลัพธ์จากการทดสอบแสดงอยู่ด้านล่าง:
เราต้องพิจารณาประเด็นต่อไปนี้สำหรับคำสั่ง drop:
- ในการลบตารางใน HBase เราต้องปิดใช้งานตารางนั้นก่อน
- ในการลบตารางใน HBase เราต้องปิดใช้งานตารางนั้นก่อน
- ดังนั้น ในการลบหรือยกเลิกตาราง ก่อนอื่นต้องปิดใช้งานตารางนั้นโดยใช้คำสั่ง disable
- ในภาพหน้าจอด้านบน เรากำลังทำการวางping ตาราง “การศึกษา”
- ก่อนดำเนินการคำสั่งนี้ จำเป็นต้องปิดใช้งานตาราง “education” ก่อน
drop_all
Syntax: drop_all<"regex">
- คำสั่งนี้จะลบตารางทั้งหมดที่ตรงกับรูปแบบนิพจน์ทั่วไป (regex) ที่กำหนด
- ต้องปิดใช้งานตารางก่อนจึงจะสามารถเรียกใช้คำสั่งนี้ได้ โดยใช้คำสั่ง disable_all
- ตารางที่มีนิพจน์การจับคู่แบบ regex จะถูกลบออกจาก HBase
เปิดใช้งาน
Syntax: is_enabled 'education'
คำสั่งนี้จะตรวจสอบว่าตารางที่ระบุชื่อนั้นเปิดใช้งานอยู่หรือไม่ โดยปกติแล้ว มักจะมีความสับสนเล็กน้อยระหว่างการกระทำของคำสั่ง "enable" และ "is_enabled" ซึ่งเราจะอธิบายให้ชัดเจนในที่นี้:
- สมมติว่าตารางหนึ่งถูกปิดใช้งาน หากต้องการใช้งานตารางนั้น เราต้องเปิดใช้งานโดยใช้คำสั่ง enable
- คำสั่ง is_enabled จะตรวจสอบว่าตารางนั้นเปิดใช้งานอยู่หรือไม่
เปลี่ยนแปลง
Syntax: alter <tablename>, NAME=><column familyname>, VERSIONS=>5
คำสั่งนี้จะเปลี่ยนสกีมาตระกูลคอลัมน์ เพื่อให้เข้าใจอย่างชัดเจนว่ามันทำอะไร เราได้อธิบายไว้ที่นี่พร้อมตัวอย่าง
ตัวอย่าง: ในตัวอย่างเหล่านี้ เราจะทำการแก้ไขตารางและคอลัมน์โดยใช้คำสั่ง alter เราจะทำการดำเนินการต่างๆ เช่น:
- การแก้ไขชื่อสกุลแบบคอลัมน์เดียวและหลายคอลัมน์
- การลบชื่อตระกูลคอลัมน์ออกจากตาราง
- การดำเนินการอื่นๆ อีกหลายอย่างที่ใช้คุณลักษณะขอบเขตกับตาราง
เพื่อเปลี่ยนหรือเพิ่มกลุ่มคอลัมน์ 'guru99_1' ในตาราง 'education' จากค่าปัจจุบัน โดยคงไว้ซึ่งเวอร์ชันเซลล์สูงสุด 5 เซลล์ ในที่นี้ "education" คือชื่อตารางที่สร้างขึ้นพร้อมกับชื่อคอลัมน์ "guru99" ก่อนหน้านี้ เรากำลังพยายามเปลี่ยนรูปแบบกลุ่มคอลัมน์จาก guru99 เป็น guru99_1 โดยใช้คำสั่ง alter ดังแสดงด้านล่าง:
hbase> alter 'education', NAME='guru99_1', VERSIONS=>5
คุณสามารถใช้คำสั่ง alter กับกลุ่มคอลัมน์หลายกลุ่มได้เช่นกัน ตัวอย่างเช่น เราจะกำหนดคอลัมน์ใหม่สองคอลัมน์สำหรับตาราง "education" ที่มีอยู่ของเรา ดังแสดงด้านล่าง:
hbase> alter 'edu', 'guru99_1', {NAME => 'guru99_2', IN_MEMORY => true}, {NAME => 'guru99_3', VERSIONS => 5}
- เราสามารถเปลี่ยนแปลงโครงสร้างคอลัมน์ได้มากกว่าหนึ่งคอลัมน์พร้อมกันโดยใช้คำสั่งนี้
- ตามที่แสดงในภาพหน้าจอข้างต้น guru99_2 และ guru99_3 คือชื่อคอลัมน์ใหม่สองชื่อที่เรากำหนดให้กับตาราง education
- เราสามารถดูวิธีการใช้คำสั่งนี้ได้จากภาพหน้าจอที่แสดงก่อนหน้านี้
ในขั้นตอนนี้ เราจะมาดูวิธีการลบกลุ่มคอลัมน์ออกจากตาราง ในการลบกลุ่มคอลัมน์ 'f1' ในตาราง 'education' ให้ใช้คำสั่งใดคำสั่งหนึ่งด้านล่างนี้ ผลลัพธ์จะแสดงอยู่ในภาพหน้าจอต่อไปนี้:
hbase> alter 'education', NAME => 'f1', METHOD => 'delete'
hbase> alter 'education', 'delete' =>' guru99_1'
ในคำสั่งนี้ เราพยายามลบคอลัมน์ชื่อ guru99_1 ที่เราสร้างไว้ก่อนหน้านี้ในขั้นตอนแรก ดังที่แสดงในภาพหน้าจอด้านล่าง จะแสดงสองขั้นตอน ได้แก่ วิธีการเปลี่ยนแอตทริบิวต์ขอบเขตตาราง และวิธีการลบแอตทริบิวต์ขอบเขตตาราง
Syntax: alter <'tablename'>, MAX_FILESIZE=>'132545224'
ขั้นตอนที่ 1) คุณสามารถเปลี่ยนค่าแอตทริบิวต์ระดับตาราง เช่น MAX_FILESIZE, READONLY, MEMSTORE_FLUSHSIZE, DEFERRED_LOG_FLUSH เป็นต้น โดยสามารถใส่ค่าเหล่านี้ไว้ท้ายสุดได้ ตัวอย่างเช่น หากต้องการเปลี่ยนขนาดสูงสุดของพื้นที่จัดเก็บข้อมูลเป็น 128MB หรือค่าหน่วยความจำอื่นๆ เราจะใช้คำสั่งนี้
การใช้งาน:
- เราสามารถใช้ MAX_FILESIZE ร่วมกับตารางเป็นแอตทริบิวต์ขอบเขตได้ดังที่กล่าวมาข้างต้น
- ค่า MAX_FILESIZE นั้นแสดงเป็นหน่วยหน่วยความจำ (ไบต์)
หมายเหตุ: ขอบเขตตาราง MAX_FILESIZE จะถูกกำหนดโดยแอตทริบิวต์บางอย่างที่มีอยู่ใน HBase MAX_FILESIZE ก็จัดอยู่ในกลุ่มแอตทริบิวต์ขอบเขตตารางเช่นกัน
ขั้นตอนที่ 2) คุณยังสามารถลบแอตทริบิวต์ระดับตารางโดยใช้เมธอด table_att_unset ได้ ดูคำสั่งด้านล่าง:
alter 'education', METHOD => 'table_att_unset', NAME => 'MAX_FILESIZE'
- ภาพหน้าจอข้างต้นแสดงชื่อตารางที่แก้ไขแล้ว พร้อมด้วยแอตทริบิวต์ขอบเขต
- เมธอด `table_att_unset` ใช้สำหรับลบค่าแอตทริบิวต์ที่มีอยู่ในตาราง
- ในกรณีที่สอง เรากำลังยกเลิกการตั้งค่าแอตทริบิวต์ MAX_FILESIZE
- หลังจากดำเนินการคำสั่งเสร็จสิ้น ระบบจะลบค่าแอตทริบิวต์ MAX_FILESIZE ออกจากตาราง “education”
alter_status
Syntax: alter_status 'education'
ผลลัพธ์ของคำสั่ง alter_status แสดงอยู่ด้านล่าง:
- คำสั่งนี้ใช้ตรวจสอบสถานะของคำสั่ง alter ได้
- ระบุจำนวนภูมิภาคของตารางที่ได้รับการอัปเดตโครงสร้างข้อมูล คุณต้องระบุชื่อตาราง
- ในภาพหน้าจอด้านบน แสดงว่าอัปเดตไปแล้ว 1/1 ภูมิภาค หมายความว่าได้อัปเดตไปแล้วหนึ่งภูมิภาค หลังจากนั้น หากสำเร็จ จะแสดงข้อความว่า “เสร็จสิ้น”
คำสั่งการจัดการข้อมูล
คำสั่งเหล่านี้ใช้กับตารางเพื่อจัดการข้อมูล เช่น การใส่ข้อมูลลงในตาราง การดึงข้อมูลจากตาราง และการลบโครงสร้างตาราง เป็นต้น คำสั่งที่อยู่ในกลุ่มนี้ได้แก่:
- นับ
- ใส่
- เข้ามา
- ลบ
- ลบทั้งหมด
- ตัด
- สแกน
เรามาดูตัวอย่างการใช้งานคำสั่งเหล่านี้กัน ดูเพิ่มเติมได้ที่นี่ การอ่านและการเขียนข้อมูล HBase.
นับ
Syntax: count <'tablename'>, CACHE =>1000
- คำสั่งนี้จะดึงจำนวนแถวในตาราง ค่าที่ส่งคืนโดยคำสั่งนี้คือจำนวนแถว
- โดยค่าเริ่มต้น ระบบจะแสดงจำนวนปัจจุบันทุกๆ 1000 แถว
- สามารถระบุช่วงเวลาการนับได้ตามต้องการ
- ขนาดแคชเริ่มต้นคือ 10 แถว
- คำสั่งนับจำนวนจะทำงานได้เร็วขึ้นเมื่อตั้งค่าแคชอย่างถูกต้อง
ตัวอย่าง:
hbase> count 'guru99', CACHE=>1000
ผลลัพธ์การนับแสดงอยู่ด้านล่าง:
ตัวอย่างนี้จะดึงข้อมูล 1000 แถวต่อครั้งจากตาราง “guru99” เราสามารถลดค่าแคชลงได้หากตารางมีจำนวนแถวมากกว่านี้ แต่โดยค่าเริ่มต้นจะดึงข้อมูลทีละแถว
hbase>count 'guru99', INTERVAL => 100000 hbase> count 'guru99', INTERVAL =>10, CACHE=> 1000
สมมติว่าตาราง “guru99” มีการอ้างอิงถึงตารางอื่น เช่น ตาราง g เราสามารถใช้คำสั่ง count กับการอ้างอิงถึงตารางนั้นได้ ดังนี้:
hbase>g.count INTERVAL=>100000 hbase>g.count INTERVAL=>10, CACHE=>1000
ใส่
Syntax: put <'tablename'>,<'rowname'>,<'columnvalue'>,<'value'>
คำสั่งนี้ใช้สำหรับสิ่งต่อไปนี้:
- มันจะใส่ 'ค่า' ของเซลล์ไว้ที่ตารางหรือแถวหรือคอลัมน์ที่กำหนดหรือระบุ
- ระบบจะทำการประสานการประทับเวลาตามความเหมาะสม (ถ้าต้องการ)
ตัวอย่าง: ในที่นี้ เรากำลังใส่ค่าลงในตาราง “guru99” ในแถว r1 และคอลัมน์ c1
hbase> put 'guru99', 'r1', 'c1', 'value', 10
เราได้ใส่ค่าสามค่า ได้แก่ 10, 15 และ 30 ลงในตาราง “guru99” ดังที่แสดงในภาพหน้าจอด้านล่าง
สมมติว่าตาราง “guru99” มีการอ้างอิงถึงตารางอื่น เช่น ตาราง g เราสามารถเรียกใช้คำสั่งกับตารางที่อ้างอิงถึงนั้นได้ ดังนี้:
hbase> g.put 'guru99', 'r1', 'c1', 'value', 10
หลังจากใส่ค่าลงใน “guru99” แล้ว ผลลัพธ์จะแสดงดังภาพหน้าจอข้างต้น เพื่อตรวจสอบว่าค่าที่ป้อนเข้าไปนั้นถูกแทรกเข้าไปในตารางอย่างถูกต้องหรือไม่ เราใช้คำสั่ง “scan” ในภาพหน้าจอด้านล่าง เราจะเห็นว่าค่าต่างๆ ถูกแทรกเข้าไปอย่างถูกต้องแล้ว
Code ตัวอย่าง: สำหรับฝึกฝน
create 'guru99', {NAME=>'Edu', VERSIONS=>213423443} put 'guru99', 'r1', 'Edu:c1', 'value', 10 put 'guru99', 'r1', 'Edu:c1', 'value', 15 put 'guru99', 'r1', 'Edu:c1', 'value', 30
จากโค้ดตัวอย่าง เรากำลังทำสิ่งเหล่านี้:
- ในที่นี้ เรากำลังสร้างตารางชื่อ 'guru99' โดยตั้งชื่อคอลัมน์ว่า “Edu”
- โดยใช้คำสั่ง “put” เราจะใส่ค่าลงในแถวชื่อ r1 ในคอลัมน์ “Edu” ในตาราง “guru99”
เข้ามา
Syntax: get <'tablename'>, <'rowname'>, {< Additional parameters>}
ที่นี่, รวมถึงช่วงเวลา (TIMESTAMP), เวลาประทับ (TIMESTAMP), เวอร์ชัน (VERSIONS) และตัวกรอง (FILTERS) โดยใช้คำสั่งนี้ คุณจะได้รับเนื้อหาของแถวหรือเซลล์ในตาราง นอกจากนี้ คุณยังสามารถเพิ่มพารามิเตอร์เพิ่มเติม เช่น เวลาประทับ (TIMESTAMP), เวลาประทับ (TIMERANGE), เวอร์ชัน (VERSIONS), ตัวกรอง (FILTERS) เป็นต้น เพื่อรับเนื้อหาของแถวหรือเซลล์ที่ต้องการได้
คำสั่ง `get output` ด้านล่างจะส่งคืนค่าแถว r1 และคอลัมน์ c1:
ตัวอย่าง:-
hbase> get 'guru99', 'r1', {COLUMN => 'c1'}
สำหรับตาราง “guru99” ค่าในแถว r1 และคอลัมน์ c1 จะแสดงโดยใช้คำสั่งนี้ ดังที่แสดงในภาพหน้าจอข้างต้น
hbase> get 'guru99', 'r1'
สำหรับตาราง “guru99” ค่าในแถว r1 จะแสดงโดยใช้คำสั่งนี้
hbase> get 'guru99', 'r1', {TIMERANGE => [ts1, ts2]}
สำหรับตาราง “guru99” ค่าในแถว r1 ในช่วงเวลา ts1 ถึง ts2 จะถูกแสดงโดยใช้คำสั่งนี้
hbase> get 'guru99', 'r1', {COLUMN => ['c1', 'c2', 'c3']}
สำหรับตาราง “guru99” ค่าในแถว r1 และกลุ่มคอลัมน์ c1, c2 และ c3 จะถูกแสดงโดยใช้คำสั่งนี้
ลบ
Syntax:delete <'tablename'>,<'row name'>,<'column name'>
- คำสั่งนี้จะลบค่าในเซลล์ของแถวหรือคอลัมน์ที่กำหนดไว้ในตาราง
- คำสั่งลบจะต้องตรงกับพิกัดของเซลล์ที่ถูกลบอย่างแม่นยำ
- เมื่อทำการสแกน การลบเซลล์จะลบค่าเวอร์ชันเก่าออกไปด้วย
ตัวอย่าง: คำสั่งลบด้านล่างนี้จะลบเซลล์ r1 และ c1 ออกจากตาราง guru99:
hbase(main):)020:0> delete 'guru99', 'r1', 'c1''.
- คำสั่งข้างต้นจะลบแถว r1 จากกลุ่มคอลัมน์ c1 ในตาราง “guru99”
- สมมติว่าตาราง “guru99” มีการอ้างอิงตารางบางอย่าง เช่น g
- เราสามารถรันคำสั่งบนการอ้างอิงตารางได้เช่นกัน เช่น hbase> g.delete 'guru99', 'r1', 'c1'
ลบทั้งหมด
Syntax: deleteall <'tablename'>, <'rowname'>
- คำสั่งนี้จะลบเซลล์ทั้งหมดในแถวที่กำหนด
- เราสามารถกำหนดชื่อคอลัมน์และเวลาประทับในไวยากรณ์ได้ตามต้องการ
ตัวอย่าง: คำสั่ง deleteall ด้านล่างนี้จะลบทุกเซลล์ในแถว r1:
hbase>deleteall 'guru99', 'r1', 'c1'
คำสั่งนี้จะลบแถวและคอลัมน์ทั้งหมดที่มีอยู่ในตาราง เราสามารถระบุชื่อคอลัมน์ได้ด้วย (ถ้าต้องการ)
ตัด
Syntax: truncate <tablename>
คำสั่ง truncate ด้านล่างจะล้างตารางทั้งหมดในขณะที่ยังคงรักษาข้อมูลบางส่วนไว้ping โครงสร้างของมัน:
หลังจากทำการลบข้อมูลทั้งหมดในตาราง HBase แล้ว โครงสร้างตารางจะยังคงอยู่ แต่ข้อมูลในตารางจะหายไป คำสั่งนี้ทำหน้าที่ 3 อย่าง ดังที่ระบุไว้ด้านล่าง:
- ปิดใช้งานตารางหากมีอยู่แล้ว
- ลบตารางหากมีอยู่แล้ว
- สร้างตารางที่กล่าวถึงขึ้นมาใหม่
สแกน
Syntax: scan <'tablename'>, {Optional parameters}
คำสั่งนี้จะสแกนตารางทั้งหมดและแสดงเนื้อหาของตาราง
- เราสามารถส่งข้อกำหนดเพิ่มเติมหลายรายการไปยังคำสั่งสแกนนี้เพื่อรับข้อมูลเพิ่มเติมเกี่ยวกับตารางที่มีอยู่ในระบบ
- ข้อมูลจำเพาะของเครื่องสแกนอาจรวมถึงคุณลักษณะต่อไปนี้หนึ่งรายการหรือมากกว่าหนึ่งรายการ
- พารามิเตอร์เหล่านี้ได้แก่ TIMERANGE, FILTER, TIMESTAMP, LIMIT, MAXLENGTH, COLUMNS, CACHE, STARTROW และ STOPROW
scan 'guru99'
ผลการสแกนแสดงอยู่ด้านล่าง:
ในภาพหน้าจอด้านบน:
- ภาพแสดงตาราง “guru99” พร้อมชื่อคอลัมน์และค่าต่างๆ
- ประกอบด้วยค่าแถวสามค่า ได้แก่ r1, r2 และ r3 สำหรับค่าคอลัมน์เดียวคือ c1
- โปรแกรมนี้จะแสดงค่าที่เกี่ยวข้องกับแต่ละแถว
ตัวอย่าง: การใช้งานคำสั่ง scan ในรูปแบบต่างๆ:
| คำสั่ง | การใช้ |
|---|---|
| สแกน '.META.', {COLUMNS => 'info:regioninfo'} | โปรแกรมนี้จะแสดงข้อมูลเมตาที่เกี่ยวข้องกับคอลัมน์ทั้งหมดที่มีอยู่ในตารางใน HBase |
| สแกน 'guru99', {COLUMNS => ['c1', 'c2'], LIMIT => 10, STARTROW => 'xyz'} | โปรแกรมนี้แสดงเนื้อหาของตาราง guru99 พร้อมด้วยกลุ่มคอลัมน์ c1 และ c2 โดยจำกัดค่าไว้ที่ 10 |
| สแกน 'guru99', {COLUMNS => 'c1', TIMERANGE => [1303668804, 1303668904]} | โค้ดนี้แสดงเนื้อหาของ guru99 โดยใช้ชื่อคอลัมน์ c1 พร้อมค่าที่อยู่ระหว่างช่วงเวลาที่ระบุไว้ในแอตทริบิวต์ value |
| สแกน 'guru99', {RAW => true, VERSIONS =>10} | ในคำสั่งนี้ RAW=> true จะให้คุณสมบัติขั้นสูง เช่น การแสดงค่าเซลล์ทั้งหมดที่มีอยู่ในตาราง guru99 |
Code ตัวอย่าง: ขั้นแรก สร้างตารางและใส่ค่าลงในตาราง ข้อมูลที่ป้อนจะแสดงอยู่ในภาพหน้าจอด้านล่าง:
create 'guru99', {NAME=>'e', VERSIONS=>2147483647} put 'guru99', 'r1', 'e:c1', 'value', 10 put 'guru99', 'r1', 'e:c1', 'value', 12 put 'guru99', 'r1', 'e:c1', 'value', 14 delete 'guru99', 'r1', 'e:c1', 11
ถ้าเรารันคำสั่งสแกน:
Query: scan 'guru99', {RAW=>true, VERSIONS=>1000}
โปรแกรมจะแสดงผลลัพธ์ดังที่แสดงด้านล่าง:
ข้อมูลที่แสดงในภาพหน้าจอข้างต้นมีดังต่อไปนี้:
- กำลังสแกนตาราง guru99 ด้วยแอตทริบิวต์ RAW=>true, VERSIONS=>1000
- แสดงแถวพร้อมกลุ่มคอลัมน์และค่าต่างๆ
- ในแถวที่สาม ค่าที่แสดงคือค่าที่ถูกลบออกจากคอลัมน์นั้น
- ผลลัพธ์ที่แสดงออกมาเป็นแบบสุ่ม ไม่สามารถเรียงลำดับเดียวกับค่าที่เราป้อนลงในตารางได้
Cluster คำสั่งการจำลองแบบ
- คำสั่งเหล่านี้ใช้งานได้ในโหมดการตั้งค่าคลัสเตอร์ของ HBase
- คำสั่งเหล่านี้โดยทั่วไปใช้สำหรับเพิ่มและลบโหนดในคลัสเตอร์ รวมถึงเริ่มและหยุดการจำลองข้อมูล
| คำสั่ง | ฟังก์ชั่น |
|---|---|
| add_peer | เพิ่มโหนดลงในคลัสเตอร์เพื่อทำการจำลองข้อมูล hbase> add_peer '3', zk1,zk2,zk3:2182:/hbase-prod |
| Remove_peer | หยุดสตรีมการจำลองข้อมูลที่กำหนดไว้และลบข้อมูลเมตาทั้งหมดเกี่ยวกับคู่ค้า hbase> Remove_peer '1' |
| start_replication | เริ่มการทำงานใหม่ของฟังก์ชันการจำลองข้อมูลทั้งหมด hbase> start_replication |
| stop_replication | หยุดการทำงานของฟังก์ชันการจำลองข้อมูลทั้งหมด hbase>stop_replication |
























