hive讀取es資料
轉自:https://www.iteblog.com/archives/1857.html
本文將介紹如何通過Hive來讀取中的資料,然後我們可以像操作其他正常Hive表一樣,使用Hive來直接操作中的資料,將極大的方便開發人員。本文使用的各元件版本分別為 Hive0.12、Hadoop-2.2.0、 2.3.4。
我們先來看看ElasticSearch中相關表的mapping:
{
"user" :
{
"properties" :
{
"regtime" :
{
"index" :
"not_analyzed" ,
"type" :
"string"
},
"uid" :
{
"type" :
"integer"
},
"mobile" :
{
"index" :
"not_analyzed" ,
"type" :
"string"
},
"username" :
{
"index" :
"not_analyzed" ,
"type" :
"string"
}
}
}
}
|
ElasticSearch中的index名為iteblog,type為user;user有regtime、uid、mobile以及username四個屬性。現在我們在Hive端進行操作。
要讓Hive能夠操作ElasticSearch中的資料我們需要對Hive進行一些設定。值得高興的是,ElasticSearch官方為我們提供了一些類庫可以實現這些要求。我們需要引入相應的elasticsearch-hadoop-xxx.jar包,因為我們得ElasticSearch版本是2.x的,所以我們最少需要使用ES-Hadoop 2.2.x,本文使用的是elasticsearch-hadoop-2.3.4.jar,這個可以到Maven中央倉庫下載。要讓Hive能夠載入elasticsearch-hadoop-2.3.4.jar檔案有好幾種方式:
1、直接通過add命令載入,如下:
hive
> ADD JAR /home/iteblog/elasticsearch-hadoop-2 .3.4.jar;
Added
[ /home/iteblog/elasticsearch-hadoop-2 .3.4.jar]
to class path
Added
resources: [ /home/iteblog/elasticsearch-hadoop-2 .3.4.jar]
|
2、我們還可以在啟動Hive的時候進行設定,如下:
$
bin /hive
--auxpath= /home/iteblog/elasticsearch-hadoop-2 .3.4.jar
|
3、我們還可以通過設定hive.aux.jars.path
屬性來實現:
$
bin /hive
-hiveconf hive.aux.jars.path=
|