HBase不同客户端

标签 hbase thrift avro

我正在做一个项目,我想从HBase系统读取数据。我读到有各种可用的 HBase 客户端,默认的 Java 客户端、Thrift、Avro 等。

现在我很困惑,如果我选择默认的 Java 客户端,那么我是否能够使用 thrift 客户端读取存储在 HBase 中的数据?

我想了解,如果我使用 thrift 客户端从 HBase 读取数据,那么它会使用 thrift 反序列化器将数据从二进制类型转换为适当的类型?如果这是真的,那么如果我使用 HBase 默认客户端读取,使用 thrift 客户端加载的数据将被损坏?

感谢您的帮助!! 〜罗希特

最佳答案

如果您正在使用 Java 开发 HBase 应用程序,我建议使用原始 HBase API - 它比 Thrift、REST、Avro 等更强大。

Java HBase API 通过 Zookeeper 直接与 HBase 数据库通信。

如果您使用 Java,那么您必须使用其他协议(protocol)之一 - Thrift、REST、Avro 等。例如,Python 有一些适用于 Thrift 的库(我推荐 HappyBase )以及休息。 Ruby 和其他语言也是如此。

如果您使用 Java API(直接)插入数据,您将能够使用 Python 或 Ruby 上的 Thrift 检索完全相同的数据。您可能需要小心数据结构/格式(HBase 将所有内容存储为字节),因此请小心存储字符串、整数、unicode 字符串等。

关于HBase不同客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14853379/

相关文章:

guice - 在 Shiro 中,未绑定(bind)的 SecurityManager 真的是无效的应用程序配置吗?

hadoop - COUNT (*) 在 INSERT INTO 或 TRUNCATE 之后返回过期的行数

hadoop - 试图将超过 32 个 hfiles 加载到一个区域的一个家庭

hbase - Hbase Cell Version的使用

java - 如何在Apache thrift中以JSON列表输出

java - 如何使用 Thrift 在 RPC 中传播通用异常?

serialization - oozie 上的 Avro Map-Reduce

apache-spark - Spark : Avro vs Parquet performance

hadoop - 来自 HBase 查询的 Hbase 表

java - 为什么 HBase 中的 Bytes.toBytes() 无法返回我在我的情况下搜索的最后一行?