2016-01-10 6 views
1

Давайте рассмотрим пример камеры трафика. Скажем, у меня есть огромный набор данных с записями камеры движения, которые выглядят так: plate_no | camera_id | город | местоположение | направление | временная метка | и т.д. | и т.д.Spark SQL, Spark Streaming, Solr, Impala, правильный инструмент для запроса «как + перекресток»

Я хотел бы получить результаты удовлетворяют всем из следующих параметров:

  1. место как '% George Street'
  2. 1 окт < < метки времени 3 октября
  3. 4 октября < метки времени < 5 октября
  4. 15 октября < < отметка времени 20 октября

Подход, который мы принимаем сейчас, - это индексировать данные в SolrCloud, затем получить три набора результатов, например 1 & 2, 1 & 3, 1 & 4, а затем использовать SparkSQL для загрузки их как RDD. в конце используйте Spark для пересечения трех наборов результатов. Наконец, вы получаете автомобили, которые появились вокруг улицы Джорджа в октябре, 4-5 октября и 20 октября. Но производительность не идеальна, для Spark SQL требуется много времени, чтобы запросить Solr и сформировать RDD. Мы тестировали только около 0,5 миллиарда записей, таких запросов стоит 1-2 минуты ~. Когда мы увеличиваем набор данных, ухудшается ситуация. Мы ищем что-то около 30 секунд ~.

Просто интересно, какой был бы подходящий инструмент для этой задачи или есть ли лучший подход, чем этот.

+0

Используете ли вы [разъем искрового резонатора] (https://github.com/LucidWorks/spark-solr)? Насколько велики результирующие данные с каждой отдельной даты? Как долго вы можете получить эти фреймы данных (дата и местоположение)? Последнее пересечение должно быть дешевым. – KrisP

+0

@ KrisP Да, мы используем искру-solr, приблизительно 0,2-0,5 млн записей с каждой отдельной даты. Последнее пересечение достаточно быстро. От запроса solr к сформированному RDD занимает почти 30 секунд ~ – Shengjie

+0

Используете ли вы основные подстановочные знаки? http://stackoverflow.com/questions/11766351/understanding-lucene-leading-wildcard-performance –

ответ

0

Наконец, мы нашли разумное решение для этого, мы разместили нашу таблицу улья в формате «Паркет + Снайпер», затем мы просто использовали SparkSQL для запроса по разному периоду времени и выборки разных наборов результатов, например 1 & 2, 1 & 3, 1 & 4. В конце мы сделали «пересечение» на наборах результатов.

В этом случае мы полностью катались на Solr. В конце звучание звучит довольно громко.

например. SparkSQL поддерживает как запрос, intesect

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

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