Справка по Hbase / Hadoop Query - PullRequest
       19

Справка по Hbase / Hadoop Query

19 голосов
/ 07 сентября 2008

Я работаю над проектом с другом, который будет использовать Hbase для хранения своих данных. Есть ли хорошие примеры запросов? Кажется, я пишу тонну Java-кода, чтобы перебирать списки RowResult, когда на земле SQL я мог написать простой запрос. Я что-то пропустил? Или Hbase чего-то не хватает?

Ответы [ 6 ]

20 голосов
/ 07 сентября 2008

Я думаю, что вы, как и многие из нас, делаете ошибку, рассматривая bigtable и HBase, как просто другую СУБД, когда это модель хранения на основе столбцов, предназначенная для эффективного хранения и извлечения больших наборов разреженных данных. Это означает, что, в идеале, необходимо хранить отношения «многие-к-одному» в одной строке, например. Ваши запросы должны возвращать очень мало строк, но содержать (потенциально) много точек данных.

Возможно, если бы вы рассказали нам больше о том, что вы пытались сохранить, мы могли бы помочь вам спроектировать вашу схему, чтобы она соответствовала способу выполнения больших таблиц / HBase.

Чтобы узнать, что HBase делает не так, как "традиционная" СУБД, ознакомьтесь с этой замечательной статьей: Соответствие импеданса: когда использовать HBase Брайана Даксбери.

2 голосов
/ 18 апреля 2010

Если вы хотите получить доступ к HBase, используя язык запросов и драйвер JDBC, это возможно. Paul Ambrose выпустил библиотеку под названием HBQL на hbql.com, которая поможет вам в этом. Я использовал его для нескольких проектов, и он работает хорошо. Очевидно, у вас не будет доступа к полному SQL, но это немного облегчает его использование.

1 голос
/ 30 сентября 2008

Я бы рекомендовал взглянуть на проект Apache Hive , который похож на HBase (в том смысле, что это распределенная база данных), который реализует язык SQL-esque.

1 голос
/ 07 сентября 2008

Я посмотрел на Hadoop и Hbase и, как сказал Шон , вскоре понял, что это не дает мне того, что я на самом деле хотел, - это кластеризованная JDBC-совместимая база данных.

Я думаю, что вам лучше использовать что-то вроде C-JDBC или HA-JDBC , что больше похоже на то, чем я был после. (Лично я не разбираюсь ни с одним из них, кроме как с чтением документации, поэтому не могу сказать, какой из них хорош, если таковой имеется.)

0 голосов
/ 12 декабря 2009

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

  • HBase основан на / вдохновлен BigTable, который AppEngine представляет в виде своего db api, поэтому просмотр их документов должен помочь, если вы работаете над веб-приложением .

  • Если вы не работаете с веб-приложением, то тип итерации, которую вы описываете, обычно обрабатывается с помощью map / reduce (не выдает значения, которые вам не нужны). Пропуск значений с помощью итераторов фактически гарантирует, что ваше приложение будет иметь узкие места с наборами данных размером HBase. Если вы обнаружите, что все еще думаете на языке SQL, ознакомьтесь с руководством пользователя cloudera и руководством по улью.

  • По сути, все различие между HBase / SQL (для не-веб-приложений) сводится к «Посылать вычисления в данные, а не отправлять данные в вычисления» - если вы помните об этом, пока ты кодируешь, у тебя все будет хорошо: -)

С уважением,

David

0 голосов
/ 29 сентября 2008

Спасибо за ответ, Шон, и извините за мой поздний ответ. Я часто совершаю ошибку, рассматривая HBase как RDBMS. Так часто на самом деле, что мне пришлось переписывать код из-за этого! Это так сложно отучиться.

Сейчас у нас всего 4 таблицы. Что, в данном случае, очень мало, учитывая мое прошлое. Я просто надеялся использовать некоторые функциональные возможности СУБД, в основном придерживаясь модели хранения, ориентированной на столбцы.

...