我正在开展一个项目,我想从HBase系统中读取数据。我读到有各种HBase客户端,默认的Java Client,Thrift,Avro等等。
现在我很困惑,如果我选择默认的Java Client,那么我能够使用thrift客户端读取存储在HBase中的数据吗?
我想了解如果我使用thrift客户端从HBase读取数据,那么它将使用thrift反序列化器将数据从二进制类型转换为适当的类型?如果这是真的,那么如果我使用HBase默认客户端读取,那么使用thrift客户端加载的数据将会被破坏吗?
感谢您的帮助! 〜罗希特夏尔
答案 0 :(得分:3)
如果您使用Java开发HBase应用程序,我建议使用原始HBase API - 它比Thrift,REST,Avro等更强大。
Java HBase API通过Zookeepers直接与HBase数据库通信。
如果你不使用Java,那么你必须使用其他协议 - Thrift,REST,Avro等。例如,Python有一些Thrift库(我推荐HappyBase) )以及REST。 Ruby和其他语言也是如此。
如果使用Java API(直接)插入数据,您将能够使用Thrift on Python或Ruby检索完全相同的数据。您可能需要小心数据结构/格式(HBase将所有内容存储为字节),因此请小心存储字符串,整数,unicode字符串等。