目前针对SQL on ElasticSearch 已经有了比较好的解决方案:elasticsearch-sql,其实Spark-SQL也可以满足一些基本的ES数据探查的需求,实现起来也相对简单。
elasticsearch-spark的包针对ES扩展了Spark Datasource,我们可以使用sql查询es中的数据,中间Spark充当了“SQL解析器”的角色。
环境与数据准备:
- Spark-2.1.0环境;
- elasticsearch-spark-20_2.11-5.4.2.jar;
- Hive环境
- ES集群hosts:18.18.18.1,18.18.18.2,18.18.18.3, 端口:9900
- ES导入了一部分测试数据,index:empp type: emee
步骤:
- 启动spark-shell:
spark-shell --jars elasticsearch-spark-20_2.11-5.4.2.jar
- 创建Es hive表:
create table EsHiveTable using es OPTIONS (es.nodes '18.18.18.1,18.18.18.2,18.18.18.3', es.port '9900',path 'empp/emee')
- 探查
spark.sql("select * from EsHiveTable limit 1").show