15 releases (2 stable)
1.2.0 | Jan 21, 2024 |
---|---|
1.1.0 | Dec 31, 2021 |
0.7.6 | Dec 28, 2021 |
#1394 in Network programming
39 downloads per month
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
Dependencies
~0.8–6.5MB
~49K SLoC