Рекомендуемый способ доступа к HBase с использованием Scala - PullRequest
0 голосов
/ 18 мая 2018

Теперь, когда SpyGlass больше не поддерживается, каков рекомендуемый способ доступа к HBase с использованием Scala / Scalding? аналогичный вопрос был задан в 2013 году, но большинство из предложенных ссылок либо устарели, либо не работают.Единственная полезная ссылка - Apache Flink .Это считается лучшим вариантом в настоящее время?Люди все еще рекомендуют SpyGlass для новых проектов, даже если он не поддерживается?Производительность (массово параллельная) и тестируемость являются приоритетами.

Ответы [ 3 ]

0 голосов
/ 22 мая 2018

Я подключаюсь к HBase во Flink, используя Java.Просто создайте объект HBase Connection в open и закройте его в close методах RichFunction (т.е. RichSinkFunction).Эти методы вызываются один раз каждым слотом Flink.

Я думаю, что вы можете сделать что-то подобное и в Scala.

0 голосов
/ 23 мая 2018

Зависит от того, что вы подразумеваете под «рекомендованным», я думаю.

Сделай сам

Угорь

Если вы просто хотите получить доступ к данным на 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)что вам может быть интересно посмотреть.

0 голосов
/ 19 мая 2018

Согласно моему опыту написания данных Cassandra с использованием разъема Flink Cassandra, я думаю, что лучший способ - использовать встроенные разъемы Flink.Начиная с Flink 1.4.3 вы можете использовать разъем HBase Flink.Смотри здесь

...