我正在做一个项目,我想从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/