ES-Hadoop是Elasticsearch推出的专门用于对接Hadoop生态的工具,可以让数据在Elasticsearch和Hadoop之间双向移动,无缝衔接Elasticsearch与Hadoop服务,充分使用Elasticsearch的快速搜索及Hadoop批处理能力,实现交互式数据处理。本文介绍如何通过ES-Hadoop实现Hadoop的Hive服务读写阿里云Elasticsearch数据。
背景信息
Hadoop生态的优势是处理大规模数据集,但是其缺点也很明显,就是当用于交互式分析时,查询时延会比较长。而Elasticsearch擅长于交互式分析,对于很多查询类型,特别是对于Ad-hoc查询(即席查询),可以达到秒级。ES-Hadoop的推出提供了一种组合两者优势的可能性。使用ES-Hadoop,您只需要对代码进行很小的改动,即可快速处理存储在Elasticsearch中的数据,并且能够享受到Elasticsearch带来的加速效果。
ES-Hadoop的原理是将Elasticsearch作为MR、Spark或Hive等数据处理引擎的数据源,在计算存储分离的架构中扮演存储的角色。这和 MR、Spark或Hive的数据源并无差异,但相对于这些数据源,Elasticsearch具有更快的数据选择过滤能力。这种能力正是分析引擎最为关键的能力之一。

操作流程
准备工作
步骤一:上传ES-Hadoop JAR包至HDFS
步骤二:创建Hive外表
步骤三:通过Hive写入索引数据
步骤四:通过Hive读取索引数据
总结
本文以阿里云EMR和Elasticsearch为例,介绍了如何通过Elasticsearch强大的ES-Hadoop组件,在Hive上进行数据的查询和写入,可以帮助您将Elasticsearch与Hadoop生态组件结合起来,实现更灵活的数据分析。如果您需要了解ES-Hadoop与Hive更高级的配置,请参见Elasticsearch官方说明文档。