Skip to content

midnightexigent/hbase-thrift-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

68 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HBase Thrift

This library is like happybase, but in rust. It provides a way to interact with HBase's thrift interface

It provides (some) wrappers that make it easier to interact with the generated code from HBase's Thrift Spec

Additionnaly, it provides connection pools through thrift-pool : see the pool example

Example

use hbase_thrift::hbase::{HbaseSyncClient, THbaseSyncClient};
use thrift::{
    protocol::{TBinaryInputProtocol, TBinaryOutputProtocol},
    transport::{TBufferedReadTransport, TBufferedWriteTransport, TIoChannel, TTcpChannel},
};

fn main() -> Result<(), thrift::Error> {
    let mut channel = TTcpChannel::new();
    channel.open("localhost:9090")?;
    let (i_chan, o_chan) = channel.split()?;

    let i_prot = TBinaryInputProtocol::new(TBufferedReadTransport::new(i_chan), true);
    let o_prot = TBinaryOutputProtocol::new(TBufferedWriteTransport::new(o_chan), true);

    let mut client = HbaseSyncClient::new(i_prot, o_prot);
    let tables = client.get_table_names()?;

    println!(
        "tables: {:?}",
        tables
            .into_iter()
            .map(|v| String::from_utf8(v).unwrap())
            .collect::<Vec<_>>()
    );

    Ok(())
}

Other examples are under the examples directory

Also see vector-http-sink-hbase which motivated the creation of this library

Documentation

About

Rust client for HBase's Thrift Interface

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published