ElasticSearch for Apache Hadoop是ES提供的工具库,让Hadoop、Pig、Hive等可以比较原生的方式去和ES交互。
目前提供了mapreduce、hive、pig、cascading、spark、storm的集成。
下面以Spark为例,演示如何利用这个工具库去读取ES记录
安装
我使用的是spark-shell交互式环境进行的测试,所以需要手动下载elasticsearch-hadoop的jar包。
在maven项目中可以通过添加
org.elasticsearchelasticsearch-hadoop2.1.0.Beta3
这是包含了所有支持的jar包,也可以下载单独的spark支持包。
对于Spark,还需要下载Kryo,来替代Spark自带的序列化包。
最后elasticsearch-hadoop只支持Java 1.7以上版本,所以需要看看Java环境是否匹配。
启动spark-shell时,使用以下命令加载特定jar包
./bin/spark-shell -jars ./elasticsearch-hadoop-2.1.0.Beta3.jar;./kryo-3.0.0/jar
指定序列化工具
import com.esotericsoftware.kryo.KryoSerializableimport org.apache.spark.SparkConfval conf = new SparkConf()conf.set("spark.serializer", classOf[KryoSerializer].getName)
读取
import org.apache.hadoop.conf.Configurationimport org.elastics