Давайте рассмотрим пример камеры трафика. Скажем, у меня есть огромный набор данных с записями камеры движения, которые выглядят так: plate_no | camera_id | город | местоположение | направление | временная метка | и т.д. | и т.д.Spark SQL, Spark Streaming, Solr, Impala, правильный инструмент для запроса «как + перекресток»
Я хотел бы получить результаты удовлетворяют всем из следующих параметров:
- место как '% George Street'
- 1 окт < < метки времени 3 октября
- 4 октября < метки времени < 5 октября
- 15 октября < < отметка времени 20 октября
Подход, который мы принимаем сейчас, - это индексировать данные в SolrCloud, затем получить три набора результатов, например 1 & 2, 1 & 3, 1 & 4, а затем использовать SparkSQL для загрузки их как RDD. в конце используйте Spark для пересечения трех наборов результатов. Наконец, вы получаете автомобили, которые появились вокруг улицы Джорджа в октябре, 4-5 октября и 20 октября. Но производительность не идеальна, для Spark SQL требуется много времени, чтобы запросить Solr и сформировать RDD. Мы тестировали только около 0,5 миллиарда записей, таких запросов стоит 1-2 минуты ~. Когда мы увеличиваем набор данных, ухудшается ситуация. Мы ищем что-то около 30 секунд ~.
Просто интересно, какой был бы подходящий инструмент для этой задачи или есть ли лучший подход, чем этот.
Используете ли вы [разъем искрового резонатора] (https://github.com/LucidWorks/spark-solr)? Насколько велики результирующие данные с каждой отдельной даты? Как долго вы можете получить эти фреймы данных (дата и местоположение)? Последнее пересечение должно быть дешевым. – KrisP
@ KrisP Да, мы используем искру-solr, приблизительно 0,2-0,5 млн записей с каждой отдельной даты. Последнее пересечение достаточно быстро. От запроса solr к сформированному RDD занимает почти 30 секунд ~ – Shengjie
Используете ли вы основные подстановочные знаки? http://stackoverflow.com/questions/11766351/understanding-lucene-leading-wildcard-performance –