15 个版本 (2 个稳定版)

1.2.0 2024 年 1 月 21 日
1.1.0 2021 年 12 月 31 日
0.7.6 2021 年 12 月 28 日

#1837网络编程

MIT/Apache

605KB
14K SLoC

HBase Thrift

这个库类似于 happybase,但使用 Rust 编写。它提供了一种与 HBase 的 Thrift 接口交互的方式

它提供了一些包装器,使得与 HBase 的 Thrift 规范 生成的代码交互更加容易

此外,它通过 thrift-pool 提供连接池:请参阅 池示例

示例

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

其他示例位于 示例目录

还可以参考 vector-http-sink-hbase,该库的创建激发了本库的诞生

文档

依赖项

~0.9–7.5MB
~51K SLoC