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