在 Mapping 里面,将 dynamic 参数设置成 strict 可以拒绝索引包含未知字段的文档。 此条 Tips 由 medcl 贡献。

Elasticsearch 加速 SparkSQL 查询

2016-12-10 by 李振炜

李振炜,硕士就读西安电子科技大学,研究方向为图像识别,熟悉机器学习算法;
2015年毕业之后,入职奇虎360,负责Spark平台优化与维护,经历了Spark在360整个发展;
推动搜索,广告,安全等业务部门的机器学习和数据挖掘业务稳定运行在Spark平台;
主导完成了360所有业务部门Hive作业向Spark的迁移;
主导了基于Elasticsearch的SparkSQL外部索引和全文检索开发。
熟悉Spark源码,有丰富的Spark性能优化经验,对机器学习,分布式计算有深入研究。
主题:
SparkSQL对查询的SQL,需要扫描全部的数据,然后获取满足查询条件的记录。如果在海量的数据中,命中的记录个数比较小,查询的时间主要在读取数据。
为了加速响应时间,我们对存储在hdfs上的海量数据的指定字段,建立索引,存储在Elasticsearch中;对于每一个SQL查询,提取出索引字段的查询条件,然后通过Elasticsearch得到满足条件的记录的路径,Spark直接读取记录,实现了海量数据的查询,秒级响应。