Можно ли использовать разъем hbase-spark для сортировки строк hbase по некоторым столбцам с хорошей производительностью? - PullRequest
0 голосов
/ 27 апреля 2018

Ну, название вопросов говорит само за себя. У меня есть требование, которое требует получения ключей строк, соответствующих верхним значениям X (скажем, 10) в определенном столбце. Таким образом, мне нужно отсортировать строки hbase по нужным значениям столбца. Я не понимаю, как мне это сделать или даже выполнимо или нет. Похоже, что Hbase не очень хорошо справляется с этим. Кроме того, он не допускает никакой такой функциональности из коробки.

Q1. Можно ли использовать разъем hbase-spark , загрузить целые данные hbase в spark rdd и затем выполнить сортировку в нем? Это будет быстро? Как разъем и свеча с этим справятся? Будет ли он получать целые данные на одном или нескольких узлах и сортировать их распределенным способом?

Q2. Также есть ли лучший способ сделать это?

Q3. Это вообще невозможно отменить в hbase? и я должен выбрать другую структуру / технологию вообще?

Ответы [ 2 ]

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

Q2. Также есть ли лучший способ сделать это?

Если повторная разработка таблицы HBase является опцией с этим конкретным значением столбца как частью rowkey, это обеспечит быстрый доступ к этим значениям, поскольку HBase оптимизирован для фильтров на основе строк, а не фильтров на столбцах.

Затем можно создать конкатенацию строк из existing_rowkey + this_col_value. Тогда запрос к нему с помощью фильтра строк даст лучшие результаты производительности.

0 голосов
/ 29 апреля 2018

A3. Если вам нужно отсортировать данные по некоторому столбцу (не по ключу строки), вы не получите никакой выгоды от использования HBase. Это будет то же самое, что чтение необработанных файлов из кустов / hdfs и сортировка, но медленнее.

A1. Конечно, вы можете использовать SHC или любую другую библиотеку spark-hbase, но A3 все еще сохраняется. Он будет загружать все данные на каждый сервер региона как Spark RDD, только чтобы перетасовать их по всему кластеру.

A2. Как и любая другая проблема программирования / архитектуры, существует множество возможных решений в зависимости от ваших ресурсов и требований.


Будет ли спарк загружать все данные на одном узле и выполнять сортировку на одном узле или будет выполнять сортировку на разных узлах?

Это зависит от двух факторов:

  • Сколько областей в вашей таблице: Это определяет степень параллелизма (количество разделов) для чтения из вашей таблицы.
  • spark.sql.shuffle.partitions значение конфигурации: после загрузки данных из таблицы это значение определяет степень параллелизма для этапа сортировки.

есть ли лучшая [библиотека], чем SHC?

На сегодняшний день существует несколько библиотек для интеграции Spark с HBase, у каждой есть свои плюсы и минусы, и TMO ни одна из них не является полностью зрелой или не дает полного охвата (например, по сравнению с интеграцией Spark-Hive). Чтобы получить максимальную отдачу от Spark через HBase, вы должны очень хорошо понять ваш вариант использования и выбрать наиболее подходящую библиотеку.

...