15 releases (2 stable)

1.2.0 Jan 21, 2024
1.1.0 Dec 31, 2021
0.7.6 Dec 28, 2021

#647 in Encoding

30 downloads per month

MIT/Apache

605KB
14K SLoC

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

Dependencies

~1–8.5MB
~52K SLoC