Get the App
SLTechnology News&Howtos  ›  Servers  › 

How to program HBase

Shulou Source: shulou.com Published: 2022-05-31 21:26:51 09月10日 Update

This article mainly introduces how to program HBase, has a certain reference value, interested friends can refer to, I hope you can learn a lot after reading this article, the following let the editor with you to understand.

Using Eclipse to develop HBase applications

1. Create a new Java Project in Eclipse and name it HBaseTest, then right-click in Properties and select Java Build Path and Add External Jars to import the jar package under the HBase/lib directory.

2. Create a Conf folder under the root directory of the project, copy the hbase-site.xml file under HBase/Conf to this folder, right-select Properties- > Java BuildPath- > Libraries- > Add Class Folder, and then select the Conf folder.

Second, a brief introduction to HBaseJava API

1, HbaseConfiguration

Relationship: org.apache.hadoop.hbase.HBaseConfiguration

Purpose: HBase can be configured through this class

2, HBaseAdmin

Relationship: org.apache.hadoop.hbase.client.HBaseAdmin

Purpose: provides an interface to manage table information in the HBase database. It provides methods for creating tables, deleting tables, and so on.

3, HTableDescriptor

Relationship: org.apache.hadoop.hbase.client.HTableDescriptor

Function: contains the name of the table and its corresponding column family. The methods provided are

Void addFamily (HColumnDescriptor) add a column family

HColumnDescriptor removeFamily (byte [] column) removes a column family

Byte [] getName () gets the name of the table

Byte [] getValue (byte [] key) gets the value of the attribute

Void setValue (String key,Stringvalue) sets the value of the property

4, HColumnDescriptor

Relationship: org.apache.hadoop.hbase.client.HColumnDescriptor

Purpose: to maintain information about columns. The methods provided are

Byte [] getName () gets the name of the column family

Byte [] getValue () gets the value of the corresponding attribute

Void setValue (String key,String value) sets the value of the corresponding property

5, HTable

Relationship: org.apache.hadoop.hbase.client.HTable

Function: the user communicates with HBase table. This method is not thread-safe for update operations, and the write buffer may crash if multiple threads are started to try to communicate with a single HTable instance.

6, Put

Relationship: org.apache.hadoop.hbase.client.Put

Function: used to perform add operations on a single row

7, Get

Relationship: org.apache.hadoop.hbase.client.Get

Function: used to get information about a single row

8, Result

Relationship: org.apache.hadoop.hbase.client.Result

Purpose: stores the single-line value obtained after the Get or Scan operation.

9, ResultScanner

Relationship: Interface

Function: the interface through which the client gets the value.

3. HBase Java API simple instance 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.HTableDescriptor;import org.apache.hadoop.hbase.client.HBaseAdmin;import org.apache.hadoop.hbase.client.HTable;import org.apache.hadoop.hbase.client.Put;import org.apache.hadoop.hbase.client.Get;import org.apache.hadoop.hbase.client.Result Import org.apache.hadoop.hbase.client.ResultScanner;import org.apache.hadoop.hbase.client.Scan;import org.apache.hadoop.hbase.util.Bytes;/* * @ author minglaihan * / public class HBaseTest {static Configuration cfg = HBaseConfiguration.create (); / / create a new table public static void create (String tableName, String columnFamily) throws Exception {HBaseAdmin admin = new HBaseAdmin (cfg) through HBaseAdmin HTableDescriptor If (admin.tableExists (tableName)) {System.out.println ("Table exist"); System.exit (0);} else {HTableDescriptor tableDescriptor = new HTableDescriptor (tableName); tableDescriptor.addFamily (new HColumnDescriptor (columnFamily)) Admin.createTable (tableDescriptor); System.out.println ("Table create success") }} / / add a piece of data to the existing table through HTable Put public static void put (String tableName,String row,String columnFamily,String column,String data) throws IOException {HTable table = new HTable (cfg, tableName); Put put = new Put (Bytes.toBytes (row)) Put.add (Bytes.toBytes (columnFamily), Bytes.toBytes (column), Bytes.toBytes (data)); table.put (put); System.out.println ("put success") } / / get the result set public static void get (String tableName,String row) throws IOException {HTable table = new HTable (cfg, tableName); Get get = new Get (Bytes.toBytes (row)); Result result = table.get (get); System.out.println ("get" + result) listed in the tableName table } / / get all the data information of the tableName table through HTable Scan public static void scan (String tableName) throws IOException {HTable table = new HTable (cfg, tableName); Scan scan = new Scan (); ResultScanner resultScanner = table.getScanner (scan) For (Result s:resultScanner) {System.out.println ("Scan" + resultScanner);}} public static boolean delete (String tableName) throws Exception {HBaseAdmin admin = new HBaseAdmin (cfg) If (admin.tableExists (tableName)) {try {admin.disableTable (tableName); admin.deleteTable (tableName) } catch (Exception e) {/ / TODO: handle exception e.printStackTrace (); return false;}} return true } public static void main (String [] args) {String tableName = "hbase_test"; String columnFamily = "C1"; try {HBaseTest.create (tableName, columnFamily); HBaseTest.put (tableName, "row1", columnFamily, "column1", "data1") HBaseTest.get (tableName, "row1"); HBaseTest.scan (tableName); if (HBaseTest.delete (tableName) = = true) {System.out.println ("delete table" + tableName+ "success") Catch (Exception e) {/ / TODO: handle exception e.printStackTrace ();}}

Screenshot of the running result commenting out the steps of Delete:

Thank you for reading this article carefully. I hope the article "how to program HBase" shared by the editor will be helpful to everyone. At the same time, I also hope that you will support us and pay attention to the industry information channel. More related knowledge is waiting for you to learn!

Tags: Functions information properties data files articles selections individual names folders methods programming instances interfaces threads results communications values interests and at the same time 报价宝 降噪耳机价格 耳机价格 红米手机价格 华为手机价格 小米手机价格 电视机价格 笔记本电脑价格 笔记本价格 汽车价格 Docker Redmi MySQL NVidia Linux