2008-09-07 5 views
19

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

ответ

20

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

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

Для хорошего описания того, что HBase делает иначе, чем «традиционные» РСУБД, ознакомьтесь с этой замечательной статьей: Matching Impedance: When to use HBase от Bryan Duxbury.

+2

Ссылка Duxbury нарушена, но я не нашел ее в другом месте. : - \ – 2013-10-04 15:03:48

1

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

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

0

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

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

1

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

0

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

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

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

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

с уважением,

Дэвид

2

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

 Смежные вопросы

  • Нет связанных вопросов^_^