Я работаю над проектом с другом, который будет использовать Hbase для хранения данных. Есть ли хорошие примеры запросов? Кажется, я пишу тонну кода Java для повторения списков RowResult, когда на SQL-сервере я мог написать простой запрос. Я что-то упускаю? Или Hbase отсутствует что-то?
Справка по запросу Hbase/Hadoop
Ответ 1
Я думаю, что вы, как и многие из нас, ошибаетесь, рассматривая bigtable и HBase, как просто другую СУБД, когда она на самом деле является моделью, ориентированной на столбцы, которая предназначена для эффективного хранения и извлечения больших наборов разреженных данных. Это означает, например, сохранение, в идеале, отношений "один-два-один" в одной строке. Ваши запросы должны возвращать очень мало строк, но содержат (потенциально) много данных.
Возможно, если бы вы рассказали нам больше о том, что вы пытались сохранить, мы могли бы помочь вам разработать схему в соответствии с методом bigtable/HBase.
Для хорошего описания того, что HBase делает иначе, чем "традиционная" СУБД, посмотрите эту потрясающую статью: Сопоставление импеданса: когда использовать HBase Брайана Даксбери.
Ответ 2
Если вы хотите получить доступ к HBase, используя язык запросов и драйвер JDBC, это возможно. Пол Амброуз выпустил библиотеку под названием HBQL на hbql.com, которая поможет вам в этом. Я использовал его для нескольких проектов, и он работает хорошо. Очевидно, что у вас не будет доступа к полному SQL, но он немного упрощает его использование.
Ответ 3
Я посмотрел на Hadoop и Hbase, и как сказал Sean, я понял, что он не дал мне то, что я действительно хотел, это была кластерная база данных, совместимая с JDBC.
Я думаю, вам лучше использовать что-то вроде C-JDBC или HA-JDBC, которые больше похожи на то, чем я был. (Лично я не стал дальше ни с одним из них, кроме чтения документации, поэтому я не могу сказать, какие из них являются хорошими, если они есть.)
Ответ 4
Я бы рекомендовал взглянуть на проект Apache Hive, который похож на HBase (в том смысле, что он распределен база данных), которая реализует язык SQL-esque.
Ответ 5
Спасибо за ответ Шон, и извините за мой поздний ответ. Я часто ошибаюсь, рассматривая HBase как РСУБД. Так часто на самом деле, что мне пришлось переписать код из-за этого! Это такая трудная вещь, чтобы отучиться.
Сейчас у нас всего 4 таблицы. Который, в данном случае, очень мало, учитывая мой опыт. Я просто надеялся использовать некоторые функции РСУБД, в основном придерживаясь модели хранения, ориентированной на столбцы.
Ответ 6
Рад услышать, что вы, ребята, используете HBase! Я не специалист по какой-либо части воображения, но вот несколько вещей, которые могут помочь.
-
HBase основан на/вдохновлен BigTable, который, как представляется, подвергается AppEngine как их db api, поэтому просматривает свои документы должен много помочь, если вы работаете над webapp.
-
Если вы не работаете с веб-сервером, то, как вы описываете, повторяется итерация с помощью map/reduce (не выделяйте значения, которые вы не хотите). Пропуск значений с использованием итераторов практически гарантирует, что ваше приложение будет иметь узкие места с наборами данных размера HBase. Если вы обнаружите, что вы все еще думаете в SQL, ознакомьтесь с учебным пособием по клаудеру и учебнику по ульям.
-
В принципе, разница в умении HBase/SQL (для не-webapps) сводится к "Отправьте вычисления на данные, не отправляйте данные на вычисление" - если вы это помните, вы кодируете, что все будет хорошо: -)
Привет,
Дэвид