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