Spark2.x写入Elasticsearch的性能测试
一、Spark集成ElasticSearch的设计动机 ElasticSearch 毫秒级的查询响应时间还是很惊艳的。其优点有: 1. 优秀的全文检索能力 2. 高效的列式存储与查询能力 3. 数据分布式存储(Shard 分片) 相应的也存在一些缺点: 1. 缺乏优秀的SQL支持 2. 缺乏水平扩展的Reduce(Merge)能力,现阶段的实现局限在单机 3. JSON格式的查询语言,缺乏编程能力,难以实现非常复杂的数据加工,自定义函数(类似Hive的UDF等) Spark 作为一个计算引擎,可以克服ES存在的这些缺点: 1. 良好的SQL支持 2. 强大的计算引擎,可以进行分布式Reduce 3. 支持自定义编程(采用原生API或者编写UDF等函数对SQL做增强) 所以在构建即席多维查询系统时,Spark 可以和ES取得良好的互补效果 二、Spark与ElasticSearch结合的架构和原理 ES-Hadoop无缝打通了ES和Hadoop两个非常优秀的框架,我们既可以把HDFS的数据导入到ES里面做分析,也可以将es数据导出到HDFS上做备份,归档,其中值得一提的是ES-Hadoop全面的支持了Spark框架,其中包括Spark,Spark Streaming,Spark SQL,此外也支持Hive,Pig,Storm,Cascading,当然还有标准的MapReduce