HBase разные клиенты

Я работаю над проектом, в котором я хотел бы прочитать данные из системы HBase. Я читал, что доступны различные клиенты HBase, Java-клиент по умолчанию, Thrift, Avro и т. д.

Теперь я в замешательстве, если я выберу Java-клиент по умолчанию, смогу ли я прочитать данные, которые хранятся в HBase, с помощью экономного клиента?

Я хотел понять, что если я использую бережливого клиента для чтения данных из HBase, то он будет использовать десериализатор бережливости для преобразования данных из двоичного типа в соответствующий тип? Если это так, то данные, загруженные с помощью экономного клиента, будут повреждены, если я прочитаю их с помощью клиента HBase по умолчанию?

Спасибо за вашу помощь!! ~ Рохит


person Rohit    schedule 13.02.2013    source источник
comment
Guyz Пожалуйста, дайте мне знать, если у вас есть какие-либо вопросы с пониманием вопроса.   -  person Rohit    schedule 14.02.2013


Ответы (1)


Если вы разрабатываете приложение HBase на Java, я рекомендую использовать необработанный API HBase — он более мощный, чем Thrift, REST, Avro и т. д.

API Java HBase напрямую взаимодействует с базой данных HBase через Zookeepers.

Если вы не используете Java, вам придется использовать один из других протоколов — Thrift, REST, Avro и т. д. Например, в Python есть несколько библиотек для Thrift (я рекомендую HappyBase). как ОТДЫХ. Как и Ruby и другие языки.

Если вы вставите данные с помощью Java API (напрямую), вы сможете получить точно такие же данные с помощью Thrift на Python или Ruby. Возможно, вы захотите быть осторожным со структурой/форматом данных (HBase хранит все в виде байтов), поэтому просто будьте осторожны при хранении строк, целых чисел, строк Unicode и т. д.

person Suman    schedule 14.02.2013
comment
Спасибо Суман. Это действительно полезно!! Так что просто чтобы быть ясным и убедиться, что я правильно вас понял. Интерфейс клиента Thrift не использует сериализацию/десериализацию бережливости, он использует тот же механизм сериализации и десериализации, который использует клиент HBase Java? - person Rohit; 15.02.2013
comment
Просто чтобы продолжить мой последний вопрос, даже клиент командной строки HBase будет использовать точно такой же механизм сериализации, когда я пытаюсь вставить int, а затем он преобразуется в двоичный файл? - person Rohit; 15.02.2013
comment
Ах, это интересный вопрос - я не играл с частью сериализации? Вы вставляете только целые числа/строки или полные объекты? - person Suman; 15.02.2013
comment
Рекомендую поэкспериментировать и посмотреть — вот как мне пришлось выяснить, как лучше всего писать/читать целые числа, строки, юникод и т. д. В общем, если вы что-то напишете в HBase, вы получите ровно то же самое, что и вывод. - person Suman; 15.02.2013
comment
хм, попробую поиграть, а там посмотрим. В любом случае, я искал только примитивные типы Java, строки, int и т. д. Еще раз спасибо! - person Rohit; 15.02.2013
comment
Хорошо, тогда я определенно рекомендую просто записывать целые числа/строки в HBase и читать их, чтобы посмотреть, что вы получите. Я подозреваю, что сериализация/десериализация Thrift НЕ влияет на то, что вы пишете/читаете. - person Suman; 15.02.2013