HBase - Tanımla ve Değiştir

tanımlamak

Bu komut tablonun açıklamasını döndürür. Sözdizimi aşağıdaki gibidir:

hbase> describe 'table name'

Aşağıda verilen tanımla komutunun çıktısı emp tablo.

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

değiştirmek

Değiştir, mevcut bir tabloda değişiklik yapmak için kullanılan komuttur. Bu komutu kullanarak, bir sütun ailesinin maksimum hücre sayısını değiştirebilir, tablo kapsamı işleçlerini ayarlayabilir ve silebilir ve bir tablodan bir sütun ailesini silebilirsiniz.

Bir Sütun Ailesinin Maksimum Hücre Sayısını Değiştirme

Aşağıda, bir sütun ailesinin maksimum hücre sayısını değiştirmek için sözdizimi verilmiştir.

hbase> alter 't1', NAME ⇒ 'f1', VERSIONS ⇒ 5

Aşağıdaki örnekte, maksimum hücre sayısı 5 olarak ayarlanmıştır.

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

Tablo Kapsamı Operatörleri

Alter kullanarak, MAX_FILESIZE, READONLY, MEMSTORE_FLUSHSIZE, DEFERRED_LOG_FLUSH, vb. Gibi tablo kapsamı operatörlerini ayarlayabilir ve kaldırabilirsiniz.

Salt Okunur ayarı

Aşağıda, bir tabloyu salt okunur yapmak için verilen sözdizimi verilmiştir.

hbase>alter 't1', READONLY(option)

Aşağıdaki örnekte, emp tablo salt okunur.

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

Tablo Kapsam Operatörlerini Kaldırma

Tablo kapsam operatörlerini de kaldırabiliriz. Emp tablosundan 'MAX_FILESIZE'ı kaldırmak için sözdizimi aşağıda verilmiştir.

hbase> alter 't1', METHOD ⇒ 'table_att_unset', NAME ⇒ 'MAX_FILESIZE'

Bir Sütun Ailesini Silme

Alter kullanarak bir sütun ailesini de silebilirsiniz. Aşağıda, alter kullanarak bir sütun ailesini silmek için sözdizimi verilmiştir.

hbase> alter ‘ table name ’, ‘delete’ ⇒ ‘ column family ’

Aşağıda, 'emp' tablosundan bir sütun ailesini silmek için bir örnek verilmiştir.

HBase'de çalışan adında bir tablo olduğunu varsayalım. Aşağıdaki verileri içerir:

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

Şimdi isimli sütun ailesini silelim professional alter komutunu kullanarak.

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

Şimdi değişiklikten sonra tablodaki verileri doğrulayın. Silmiş olduğumuz için sütun ailesinin 'profesyonel' olmadığını gözlemleyin.

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

Java API Kullanarak Sütun Ailesi Ekleme

Yöntemi kullanarak bir tabloya sütun ailesi ekleyebilirsiniz. addColumn() nın-nin HBAseAdminsınıf. Bir tabloya sütun ailesi eklemek için aşağıda verilen adımları izleyin.

Aşama 1

Örnekleyin HBaseAdmin sınıf.

// Instantiating configuration object
Configuration conf = HBaseConfiguration.create();

// Instantiating HBaseAdmin class
HBaseAdmin admin = new HBaseAdmin(conf);

Adım 2

addColumn() yöntem bir tablo adı ve bir nesne gerektirir HColumnDescriptorsınıf. Bu nedenle,HColumnDescriptorsınıf. YapıcıHColumnDescriptorsırayla eklenecek bir sütun ailesi adı gerektirir. Burada mevcut "çalışan" tablosuna "contactDetails" adlı bir sütun ailesi ekliyoruz.

// Instantiating columnDescriptor object

HColumnDescriptor columnDescriptor = new
HColumnDescriptor("contactDetails");

Aşama 3

Kullanarak sütun ailesini ekleyin addColumnyöntem. Tablo adını veHColumnDescriptor Bu yöntemin parametreleri olarak sınıf nesnesi.

// Adding column family
admin.addColumn("employee", new HColumnDescriptor("columnDescriptor"));

Aşağıda, mevcut bir tabloya bir sütun ailesi eklemek için eksiksiz bir program verilmiştir.

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");
   }
}

Yukarıdaki programı aşağıda gösterildiği gibi derleyin ve çalıştırın.

$javac AddColumn.java $java AddColumn

Yukarıdaki derleme yalnızca sınıf yolunu " .bashrc”. Yapmadıysanız, .java dosyanızı derlemek için aşağıda verilen prosedürü izleyin.

//if "/home/home/hadoop/hbase " is your Hbase home folder then.

$javac -cp /home/hadoop/hbase/lib/*: Demo.java

Her şey yolunda giderse, aşağıdaki çıktıyı üretir:

column added

Java API Kullanarak Bir Sütun Ailesini Silme

Yöntemi kullanarak bir tablodan bir sütun ailesini silebilirsiniz. deleteColumn() nın-nin HBAseAdminsınıf. Bir tabloya sütun ailesi eklemek için aşağıda verilen adımları izleyin.

Aşama 1

Örnekleyin HBaseAdmin sınıf.

// Instantiating configuration object
Configuration conf = HBaseConfiguration.create();

// Instantiating HBaseAdmin class
HBaseAdmin admin = new HBaseAdmin(conf);

Adım 2

Kullanarak sütun ailesini ekleyin deleteColumn()yöntem. Tablo adını ve sütun ailesini parametre olarak bu yönteme iletin.

// Deleting column family
admin.deleteColumn("employee", "contactDetails");

Aşağıda, mevcut bir tablodan bir sütun ailesini silmek için eksiksiz bir program verilmiştir.

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"); 
   }
}

Yukarıdaki programı aşağıda gösterildiği gibi derleyin ve çalıştırın.

$javac DeleteColumn.java
$java DeleteColumn

Aşağıdakiler çıktı olmalıdır:

column deleted