Syncfusion.ThriftHBase.Base is a .NET library to access HBase records through HBase Thrift Server. Internally it utilizes the Thrift generated C# code for accessing HBase records. Currently it supports following platforms.
- Windows Forms
- ASP.NET MVC
The following assembly should be referenced in your application to access HBase records in C# application.
In this section, you can see how to get started with Syncfusion.ThriftHBase.Base to access HBase records through HBase Thrift Server. After adding reference to Syncfusion.ThriftHBase.Base.dll assembly in your application, include below namespace in your .cs or .vb file.
C# / VB.NET
Before proceeding further, ensure that the HBase Master server, HBase Region server and HBase Thrift Server services are running on the System along with Hadoop services.
By default HBase Thrift Server will be started in 10003 port.
//Initialize the connection HBaseConnection con = new HBaseConnection ("localhost", 10003); //Open the HiveServer connection con.Open();
The above code is used to establish connection with HBase Thrift Server running in local machine under port no: 10003. In order to switch to HBase Thrift Server running in remote machines, you need to replace the “localhost” with corresponding host name / IP address.
//Closing the HBase Server connection con.Close();
The above code is used to close the connection established.
Connection must be closed properly after every operation done.
1.Creating a table
Below code show how to create a table by using the connection object with HBase Thrift Server.
//Initialize the connection HBaseConnection con = new HBaseConnection ("localhost", 10003); //Open the HBase Server connection con.Open(); //Create a list for Column Families List<string> columnFamilies = new List<string>(); columnFamilies.Add("info"); columnFamilies.Add("contact"); columnFamilies.Add("others"); //Create table in HBase by passing the Column family names and the connection object created HBaseOperation.CreateTable(tableName, columnFamilies, con); //Close HBase Server connection Con.close();
Below code shows how to get the table schema defined for a particular table from HBase using GetColumnDescriptors method.
//Retrieves the schema for the table given as input HSchema tableSchema = HBaseOperation.GetColumnDescriptors(tableName, con);
To drop a table from HBase, use the following code.
//Drop or delete the table from HBase HBaseOperation.DropTable(tableName, con);
We have added full support for thrift service based filter operation. Below code demonstrate the usage of row filter operation for a record value with prefix “1002”
//Filter string value for RowFilter operation having prefix value “1002” var rowFilter = new FilterString().RowFilter(CompareOperator.Equal, Comparator.BinaryPrefix("1002")).Query(); //Scans values from HBase table by filtering the value for the given filter condition HBaseResultSet rowFilterResult = HBaseOperation.ScanTable(tableName, rowFilter, con);
Below code illustrates on how to insert records into HBase table.
//Initializing the collection variable for storing multiple row values. Dictionary<string, IList<HMutation>> rowCollection = new Dictionary<string, IList<HMutation>>(); //Initializing the mutation collection variable. List<HMutation> mutations = new List<HMutation>(); //RowKey value for a particular record. rowKey = “1”; //Declaring mutation value for a single row. HMutation mutation = new HMutation(); mutation.ColumnFamily = “info” mutation.ColumnName = “fullname”; mutation.Value = “Gustavo Achong”; //Adding the mutation of a single row to the mutation collection. mutations.Add(mutation); //Adding mutation collection to the row collection with the ‘rowKey’ as index value. rowCollection[rowKey] = mutations; //Inserts the multiple rows collection to the given input table. HBaseOperation.InsertRows(tableName, rowCollection, con);
IsTableExists API checks whether the given table exists in the HBase or not. Returns ‘true’ if table exists.
//Checks whether the table exists in HBase. Bool isTableExist = HBaseOperation.IsTableExists(tableName, con);
Below code illustrates on how to retrieve the list of table names available in the HBase.
//Gets the list of table names in HBase. IList<string> tableList = HBaseOperation.ListTables(con);
The below code illustrates on how to scan values from the given table. Number of rows to be fetched can be restricted by using the ‘HBaseOperation.FetchSize’ object.
//Restrict number of rows fetched from HBase table as 100. HBaseOperation.FetchSize = 100; //Scan values from the given HBase table and returns as HBaseResultSet. HBaseResultSet table = HBaseOperation.ScanTable(tableName, con);
FetchSize is used to define the number of rows that you want to fetch from a table. If FetchSize is not defined then only one row will be fetched.