HBase - Mô tả & Thay đổi
diễn tả
Lệnh này trả về mô tả của bảng. Cú pháp của nó như sau:
hbase> describe 'table name'
Dưới đây là đầu ra của lệnh mô tả trên emp bàn.
hbase(main):006:0> describe 'emp'
DESCRIPTION
ENABLED
'emp', {NAME ⇒ 'READONLY', DATA_BLOCK_ENCODING ⇒ 'NONE', BLOOMFILTER
⇒ 'ROW', REPLICATION_SCOPE ⇒ '0', COMPRESSION ⇒ 'NONE', VERSIONS ⇒
'1', TTL true
⇒ 'FOREVER', MIN_VERSIONS ⇒ '0', KEEP_DELETED_CELLS ⇒ 'false',
BLOCKSIZE ⇒ '65536', IN_MEMORY ⇒ 'false', BLOCKCACHE ⇒ 'true'}, {NAME
⇒ 'personal
data', DATA_BLOCK_ENCODING ⇒ 'NONE', BLOOMFILTER ⇒ 'ROW',
REPLICATION_SCOPE ⇒ '0', VERSIONS ⇒ '5', COMPRESSION ⇒ 'NONE',
MIN_VERSIONS ⇒ '0', TTL
⇒ 'FOREVER', KEEP_DELETED_CELLS ⇒ 'false', BLOCKSIZE ⇒ '65536',
IN_MEMORY ⇒ 'false', BLOCKCACHE ⇒ 'true'}, {NAME ⇒ 'professional
data', DATA_BLO
CK_ENCODING ⇒ 'NONE', BLOOMFILTER ⇒ 'ROW', REPLICATION_SCOPE ⇒ '0',
VERSIONS ⇒ '1', COMPRESSION ⇒ 'NONE', MIN_VERSIONS ⇒ '0', TTL ⇒
'FOREVER', K
EEP_DELETED_CELLS ⇒ 'false', BLOCKSIZE ⇒ '65536', IN_MEMORY ⇒
'false', BLOCKCACHE ⇒ 'true'}, {NAME ⇒ 'table_att_unset',
DATA_BLOCK_ENCODING ⇒ 'NO
NE', BLOOMFILTER ⇒ 'ROW', REPLICATION_SCOPE ⇒ '0', COMPRESSION ⇒
'NONE', VERSIONS ⇒ '1', TTL ⇒ 'FOREVER', MIN_VERSIONS ⇒ '0',
KEEP_DELETED_CELLS
⇒ 'false', BLOCKSIZE ⇒ '6
thay đổi
Alter là lệnh được sử dụng để thực hiện các thay đổi đối với bảng hiện có. Sử dụng lệnh này, bạn có thể thay đổi số ô tối đa của một họ cột, đặt và xóa các toán tử phạm vi bảng cũng như xóa một họ cột khỏi bảng.
Thay đổi số lượng ô tối đa của một họ cột
Dưới đây là cú pháp để thay đổi số lượng ô tối đa của một họ cột.
hbase> alter 't1', NAME ⇒ 'f1', VERSIONS ⇒ 5
Trong ví dụ sau, số ô tối đa được đặt thành 5.
hbase(main):003:0> alter 'emp', NAME ⇒ 'personal data', VERSIONS ⇒ 5
Updating all regions with the new schema...
0/1 regions updated.
1/1 regions updated.
Done.
0 row(s) in 2.3050 seconds
Toán tử phạm vi bảng
Sử dụng thay đổi, bạn có thể đặt và xóa các toán tử phạm vi bảng như MAX_FILESIZE, READONLY, MEMSTORE_FLUSHSIZE, DEFERRED_LOG_FLUSH, v.v.
Cài đặt Chỉ đọc
Dưới đây là cú pháp để tạo một bảng chỉ đọc.
hbase>alter 't1', READONLY(option)
Trong ví dụ sau, chúng tôi đã tạo emp bảng chỉ đọc.
hbase(main):006:0> alter 'emp', READONLY
Updating all regions with the new schema...
0/1 regions updated.
1/1 regions updated.
Done.
0 row(s) in 2.2140 seconds
Xóa toán tử phạm vi bảng
Chúng tôi cũng có thể loại bỏ các toán tử phạm vi bảng. Dưới đây là cú pháp để xóa 'MAX_FILESIZE' khỏi bảng trống.
hbase> alter 't1', METHOD ⇒ 'table_att_unset', NAME ⇒ 'MAX_FILESIZE'
Xóa một họ cột
Sử dụng thay đổi, bạn cũng có thể xóa một họ cột. Dưới đây là cú pháp để xóa một họ cột bằng cách sử dụng thay đổi.
hbase> alter ‘ table name ’, ‘delete’ ⇒ ‘ column family ’
Dưới đây là một ví dụ để xóa một họ cột khỏi bảng 'emp'.
Giả sử có một bảng tên là nhân viên trong HBase. Nó chứa các dữ liệu sau:
hbase(main):006:0> scan 'employee'
ROW COLUMN+CELL
row1 column = personal:city, timestamp = 1418193767, value = hyderabad
row1 column = personal:name, timestamp = 1418193806767, value = raju
row1 column = professional:designation, timestamp = 1418193767, value = manager
row1 column = professional:salary, timestamp = 1418193806767, value = 50000
1 row(s) in 0.0160 seconds
Bây giờ chúng ta hãy xóa họ cột có tên professional bằng cách sử dụng lệnh thay đổi.
hbase(main):007:0> alter 'employee','delete'⇒'professional'
Updating all regions with the new schema...
0/1 regions updated.
1/1 regions updated.
Done.
0 row(s) in 2.2380 seconds
Bây giờ xác minh dữ liệu trong bảng sau khi thay đổi. Quan sát họ cột 'chuyên nghiệp' không còn nữa, vì chúng tôi đã xóa nó.
hbase(main):003:0> scan 'employee'
ROW COLUMN + CELL
row1 column = personal:city, timestamp = 14181936767, value = hyderabad
row1 column = personal:name, timestamp = 1418193806767, value = raju
1 row(s) in 0.0830 seconds
Thêm một họ cột bằng Java API
Bạn có thể thêm họ cột vào bảng bằng phương pháp addColumn() của HBAseAdminlớp học. Làm theo các bước dưới đây để thêm họ cột vào bảng.
Bước 1
Khởi tạo HBaseAdmin lớp học.
// Instantiating configuration object
Configuration conf = HBaseConfiguration.create();
// Instantiating HBaseAdmin class
HBaseAdmin admin = new HBaseAdmin(conf);
Bước 2
Các addColumn() phương thức yêu cầu một tên bảng và một đối tượng HColumnDescriptorlớp học. Do đó, khởi tạoHColumnDescriptorlớp học. Người xây dựngHColumnDescriptorlần lượt yêu cầu một họ cột sẽ được thêm vào. Ở đây chúng tôi đang thêm một họ cột có tên là “contactDetails” vào bảng “nhân viên” hiện có.
// Instantiating columnDescriptor object
HColumnDescriptor columnDescriptor = new
HColumnDescriptor("contactDetails");
Bước 3
Thêm họ cột bằng cách sử dụng addColumnphương pháp. Chuyển tên bảng vàHColumnDescriptor đối tượng lớp làm tham số cho phương thức này.
// Adding column family
admin.addColumn("employee", new HColumnDescriptor("columnDescriptor"));
Dưới đây là chương trình hoàn chỉnh để thêm họ cột vào bảng hiện có.
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.MasterNotRunningException;
import org.apache.hadoop.hbase.client.HBaseAdmin;
public class AddColoumn{
public static void main(String args[]) throws MasterNotRunningException, IOException{
// Instantiating configuration class.
Configuration conf = HBaseConfiguration.create();
// Instantiating HBaseAdmin class.
HBaseAdmin admin = new HBaseAdmin(conf);
// Instantiating columnDescriptor class
HColumnDescriptor columnDescriptor = new HColumnDescriptor("contactDetails");
// Adding column family
admin.addColumn("employee", columnDescriptor);
System.out.println("coloumn added");
}
}
Biên dịch và thực hiện chương trình trên như hình dưới đây.
$javac AddColumn.java
$java AddColumn
Quá trình biên dịch ở trên chỉ hoạt động nếu bạn đã đặt classpath trong “ .bashrc”. Nếu bạn chưa có, hãy làm theo quy trình dưới đây để biên dịch tệp .java của bạn.
//if "/home/home/hadoop/hbase " is your Hbase home folder then.
$javac -cp /home/hadoop/hbase/lib/*: Demo.java
Nếu mọi thứ suôn sẻ, nó sẽ tạo ra kết quả sau:
column added
Xóa một họ cột bằng Java API
Bạn có thể xóa một họ cột khỏi bảng bằng phương pháp deleteColumn() của HBAseAdminlớp học. Làm theo các bước dưới đây để thêm họ cột vào bảng.
Bước 1
Khởi tạo HBaseAdmin lớp học.
// Instantiating configuration object
Configuration conf = HBaseConfiguration.create();
// Instantiating HBaseAdmin class
HBaseAdmin admin = new HBaseAdmin(conf);
Bước 2
Thêm họ cột bằng cách sử dụng deleteColumn()phương pháp. Truyền tên bảng và họ cột làm tham số cho phương thức này.
// Deleting column family
admin.deleteColumn("employee", "contactDetails");
Dưới đây là chương trình hoàn chỉnh để xóa một họ cột khỏi một bảng hiện có.
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.client.HBaseAdmin;
public class DeleteColoumn{
public static void main(String args[]) throws MasterNotRunningException, IOException{
// Instantiating configuration class.
Configuration conf = HBaseConfiguration.create();
// Instantiating HBaseAdmin class.
HBaseAdmin admin = new HBaseAdmin(conf);
// Deleting a column family
admin.deleteColumn("employee","contactDetails");
System.out.println("coloumn deleted");
}
}
Biên dịch và thực hiện chương trình trên như hình dưới đây.
$javac DeleteColumn.java
$java DeleteColumn
Sau đây là đầu ra:
column deleted