Frage
Wie kann ich eine Hbase Datenbank verwenden, um mit C # / VB.NET? (Verwendung = connect, Abfrage, erhält das Ergebnis, Einfügen, Aktualisieren, Löschen)
Ich finde nicht, nützliche Antworten mit Google.
Lösung
Ich habe gerade HBase C # Thrift Bindung als nuget Paket veröffentlicht. Alternativ können Sie Code / Binär-Dateien aus bitbucket greifen: https://bitbucket.org/vadim/hbase-sharp / downloads
Andere Tipps
Von der Beschreibung :
Ein REST-ful Web-Service-Gateway, dass unterstützt XML-, Protobuf und binäre Daten Enkodieroptionen
Es gibt eine protobuf Port für .NET und es gibt viele XML-Manipulation APIs eingebaut.
HBase C # Thrift funktioniert gut. Laden Sie einfach die neuesten thrift-0.9.2.exe, thrift.dll und Hbase.thrift Datei auf Ihrem Windows-Rechner. Sie können die erforderlichen c # Dateien mit dem folgenden Befehl erzeugen:
thrift-0.9.2.exe -gen csharp Hbase.thrift
Sie erhalten die folgenden Dateien als Ergebnis erhalten:
AlreadyExists.cs
BatchMutation.cs
ColumnDescriptor.cs
Hbase.cs
IllegalArgument.cs
IOError.cs
Mutation.cs
TAppend.cs
TCell.cs
TColumn.cs
TIncrement.cs
TRegionInfo.cs
TRowResult.cs
TScan.cs
Fügen Sie diese in Ihrem Projekt und fügen Sie thrift.dll zu Ihren Projektreferenzen. Kurzer Beispielcode (Listentabellen und insert / update einen Zellwert):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Thrift.Protocol;
using Thrift.Transport;
namespace bdc
{
class Program
{
static void Main(string[] args)
{
// Connection
var socket = new TSocket("hdp1.localdomain", 9090);
var transport =new TBufferedTransport(socket);
var protocol = new TBinaryProtocol(transport);
Hbase.Client hba = new Hbase.Client(protocol);
transport.Open();
// Get table names
Console.WriteLine("<-GET LIST OF TABLES->");
var tableNames = hba.getTableNames();
foreach (var tableName in tableNames)
Console.WriteLine(Encoding.UTF8.GetString(tableName, 0, tableName.Length));
// Insert rows
Console.WriteLine("<-INSERT->");
Mutation _mutation = new Mutation();
_mutation.IsDelete = false;
_mutation.Column = Encoding.UTF8.GetBytes("image:bodyimage");
_mutation.Value = Encoding.UTF8.GetBytes("newnew image 2.jpg");
hba.mutateRow(Encoding.UTF8.GetBytes("blogposts"), Encoding.UTF8.GetBytes("post1"), new List<Mutation> { _mutation }, null);
// Finished
Console.WriteLine("<-FINISHED->");
Console.ReadKey();
}
}
}
Der obige Code funktioniert gut mit der Hbase Installation des neuesten Hortonworks Data Platform, lief auf CentOS 7.