Зависит от того, что вы подразумеваете под «рекомендованным», я думаю.
Сделай сам
Угорь
Если вы просто хотите получить доступ к данным на HBase из приложения Scalaвы можете взглянуть на Eel , который включает библиотеки для взаимодействия со многими форматами и системами хранения в ландшафте Big Data и изначально написан на Scala.
Скорее всего, вас заинтересует модуль eel-hbase
, который из нескольких выпусков включает класс HBaseSource
(а также HBaseSink
).Это на самом деле так недавно, я просто заметил, что README
все еще упоминает, что HBase не поддерживается.Нет явных примеров с Hive, но источник и приемники работают аналогичным образом.
Kite
Другой альтернативой может быть Kite , который также имеет довольноОбширный набор примеров , из которого вы можете черпать вдохновение (в том числе с HBase), но он выглядит менее активным в проекте, чем Eel.
Большие данные фреймворки
Если вам нужна среда, которая поможет вам, вместо того, чтобы создавать собственное решение с библиотеками.Конечно, вам придется учесть некоторую кривую обучения.
Spark
Spark - довольно зрелый проект, а сам проект HBase является встроенным соединителем для Spark 2.1.1 (Скаладоки здесь). Здесь - вступительный доклад, который может прийти вам на помощь.
Общая идея заключается в том, что вы можете использовать этот пользовательский источник данных, как предложено в в этом примере :
sqlContext
.read
.options(Map(HBaseTableCatalog.tableCatalog->cat, HBaseRelation.HBASE_CONFIGFILE -> conf))
.format("org.apache.spark.sql.execution.datasources.hbase")
.load()
Предоставление вам доступа к данным HBase через Spark SQL API.Вот краткий отрывок из того же примера :
val df1 = withCatalog(cat1, conf1)
val df2 = withCatalog(cat2, conf2)
val s1 = df1.filter($"col0" <= "row120" && $"col0" > "row090").select("col0", "col2")
val s2 = df2.filter($"col0" <= "row150" && $"col0" > "row100").select("col0", "col5")
val result = s1.join(s2, Seq("col0"))
Помимо соображений производительности, как вы можете заметить, язык может быть довольно естественным для манипулирования данными.
Flink
Два ответа уже касались Flink, поэтому я не буду добавлять намного больше, за исключением ссылки на пример из последней стабильной версии на момент написания (1.4.2)что вам может быть интересно посмотреть.