在某些场景下,咱们须要直接将hive中的数据直接推到elasticsearch。下面我来介绍如何实现。首先你要肯定本身的elasticsearch的版本,版主的是elasticsearch-2.4.1 因此要用2.4.1以上的jar包:elasticsearch-hadoop-2.4.3.jar,这个jar包可在maven库中查到http://mvnrepository.com/。
准备工做作好咱们就开始实现了。第一步,建立你想要的索引curl -XPOST "http://192.168.4.217:9200/test_tag"
第二步,建立hive外部表:node
hive -e" add jar hdfs:/opt/data/jar/elasticsearch-hadoop-2.4.3.jar; add jar hdfs:/opt/data/jar/org.apache.commons.httpclient_3.1.0.v201012070820.jar; --org.apache.commons.httpclient_3.1.0.v201012070820.jar这个jar包通常是不用加的,除非在报httpclient相关错误的时候才加 use ods; create external table if not exists app.test_tag( complaint_id string, tag_name string, classification string, sub_classification string ) STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler' TBLPROPERTIES('es.nodes'='192.168.4.217','es.resource' = 'test_tag/defect_recommend_tag'); --es.resource斜线前面为索引,斜线后面为mapping名称。mapping能够不用事先建好,当数据插入时会自动根据数据类型建立mapping。 insert overwrite table app.test_tag select complaint_id,tag_name,classification,sub_classification from app.src_test_tag;"
程序执行完毕,就能够在es里看到数据了。apache