2010-03-06 3 views
2

Comment puis-je utiliser une base de données Hbase avec C#/VB.NET? (utiliser = se connecter, interroger, obtenir le résultat, insérer, mettre à jour, supprimer)Utilisation de l'Hbase avec C#

Je ne trouve pas de réponses utiles avec google.

Répondre

4

Je viens de publier la liaison HBase C# Thrift en tant que paquet de nuget. Vous pouvez également saisir le code/les binaires de bitbucket: https://bitbucket.org/vadim/hbase-sharp/downloads

+0

Cest grand Vadim! Il semble être très vieux. Où puis-je obtenir la version mise à jour de HBase-Sharp pour supporter la dernière version de HBase? –

2

De l'description:

Une passerelle de services Web REST-ful que prend en charge XML, Protobuf et binaires options d'encodage de données

Il y a un protobuf port for .NET et il y a beaucoup d'API de manipulation XML intégré.

0

HBase C# Thrift fonctionne bien. Il suffit de télécharger le dernier fichier thrift-0.9.2.exe, thrift.dll et Hbase.thrift sur votre machine Windows. Vous pouvez générer les fichiers C# requis avec la commande suivante:

thrift-0.9.2.exe -gen csharp Hbase.thrift 

Vous obtiendrez les fichiers suivants à la suite:

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 

les inclure dans votre projet et ajoutez thrift.dll à vos références de projet . Code court échantillon (tableaux de liste et insérer/mettre à jour une valeur cellulaire):

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

Le code ci-dessus fonctionne bien avec l'installation Hbase de la dernière Hortonworks Data Platform, en cours d'exécution sur CentOS 7.

+0

Malheureusement, à partir de thrift-0.9.3.exe, je n'obtiens pas les fichiers TAppend, TColumn ou TIncrement et je reçois une exception dans VS concernant l'exception TException de l'espace de nom qui n'a pas été trouvée. – SDillon

+0

J'obtiens aussi les mêmes résultats de la version 0.9.2. – SDillon

+1

Je n'ai pas fait un test complet avec 0.9.3 (mais je le ferai dans quelques jours). Bien que j'ai testé la commande (générant des fichiers cs) avec la dernière 0.9.3 et cela a fonctionné. J'ai tous les fichiers. S'il vous plaît, essayez de télécharger Hbase.thrift à http://svn.apache.org/viewvc/hbase/trunk/hbase-thrift/src/main/resources/org/apache/hadoop/hbase/thrift/Hbase.thrift?revision = 1590152 & view = co – user3330535

Questions connexes