Spark SQL、Spark Streaming、Solr、Impala、"like + Intersection"查询的正确工具
Spark SQL, Spark Streaming, Solr, Impala, the right tool for "like + Intersection" query
我们以交通摄像头外壳为例。比如说,我有一个包含交通摄像头记录的庞大数据集,看起来像:plate_no | camera_id |城市 |地点 |方向 |时间戳 |等 |等等
我希望得到满足以下所有条件的结果:
- 位置类似于“%George Street”
- 10 月 1 日 < 时间戳 < 10 月 3 日
- 10 月 4 日 < 时间戳 < 10 月 5 日
- 10 月 15 日 < 时间戳 < 10 月 20 日
我们现在采用的方法是在SolrCloud中索引数据,然后得到三个结果集1&2、1&3、1&4,然后使用SparkSQL将它们加载为RDD。最后,使用 Spark 将三个结果集相交。最后,你得到了在 10 月 1-3 日、10 月 4-5 日和 10 月 20 日出现在乔治街附近的汽车,但性能并不理想,Spark SQL 查询 Solr 和表单需要花费大量时间RDD。我们只测试了大约5亿条记录,这样的查询需要1-2分钟~。当我们增加数据集时,情况会变得更糟。我们正在寻找大约 30 秒的东西~.
只是想知道完成这项任务的正确工具是什么,或者是否有比这更好的方法。
最后,我们找到了一个合理的解决方案,我们将我们的配置单元 table 设置为 'Parquet+Snappy' 格式,然后,我们只是使用 SparkSQL 针对不同的时间段进行查询并获取不同的结果集合,例如 1&2、1&3、1&4。最后,我们对结果集做了一个'intersect'。
在这种情况下,我们完全掌握了 Solr。最后的表现还算不错
例如SparkSQL 确实支持 Like 查询,intesect
我们以交通摄像头外壳为例。比如说,我有一个包含交通摄像头记录的庞大数据集,看起来像:plate_no | camera_id |城市 |地点 |方向 |时间戳 |等 |等等
我希望得到满足以下所有条件的结果:
- 位置类似于“%George Street”
- 10 月 1 日 < 时间戳 < 10 月 3 日
- 10 月 4 日 < 时间戳 < 10 月 5 日
- 10 月 15 日 < 时间戳 < 10 月 20 日
我们现在采用的方法是在SolrCloud中索引数据,然后得到三个结果集1&2、1&3、1&4,然后使用SparkSQL将它们加载为RDD。最后,使用 Spark 将三个结果集相交。最后,你得到了在 10 月 1-3 日、10 月 4-5 日和 10 月 20 日出现在乔治街附近的汽车,但性能并不理想,Spark SQL 查询 Solr 和表单需要花费大量时间RDD。我们只测试了大约5亿条记录,这样的查询需要1-2分钟~。当我们增加数据集时,情况会变得更糟。我们正在寻找大约 30 秒的东西~.
只是想知道完成这项任务的正确工具是什么,或者是否有比这更好的方法。
最后,我们找到了一个合理的解决方案,我们将我们的配置单元 table 设置为 'Parquet+Snappy' 格式,然后,我们只是使用 SparkSQL 针对不同的时间段进行查询并获取不同的结果集合,例如 1&2、1&3、1&4。最后,我们对结果集做了一个'intersect'。
在这种情况下,我们完全掌握了 Solr。最后的表现还算不错
例如SparkSQL 确实支持 Like 查询,intesect