hive向es推送数据

第一步:首先要保证网络是通的,很多公司里子网遍布,要和运维和工程侧同事确认好网络是通的,es的地址可以通过curl es地址的方式测试一下。

第二步:下载需要的jar包,必须的是es-hadoop的包,可以在https://www.elastic.co/cn/downloads/下载,其他可能还需要,如果没有就等报错然后百度查吧。。。。

下载以后要传到hdfs一个地址,否则无法在hive中添加,用hdfs dfs -put命令。

第三步:在hive中添加jar包,ADD JAR hdfs://nmcluster/user/root/test/es_hadoop/elasticsearch-hadoop-hive-7.8.0.jar;

第四步:hive中建立es外部表

CREATE EXTERNAL TABLE hive_to_es_test (
user string
)
STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler'
TBLPROPERTIES(
'es.nodes' = 'es地址',
'es.index.auto.create' = 'true',
'es.resource' = '索引/类型r',
'es.mapping.id' = 'use_year_code',
'es.write.operation'='upsert'--如果这里是upsert的话,上边的id一定要指定,否则可以不用设置 );

es.nodes表示es的节点,多个用“,”分开;

es.index.auto.create表示如果索引不存在自动创建;

es.resource表示指定的索引和类型;

es.mapping.id表示es的_id对应的字段;

es.mapping.names表示其他字段的对应(可以不写,插入时按顺序依次对应即可);

es.write.operation表示如果id重复就更新数据;
第五步:hive中的需要同步的数据表,准备好,如果不写names配置项,需要和es中的字段顺序对应

第六步:推送数据

INSERT OVERWRITE TABLE hive_to_es_test SELECT *
  FROM test_app.to_es;

 

注意事项:

数据类型要把持一致

posted @ 2020-07-01 18:17  stAr_1  阅读(850)  评论(0编辑  收藏  举报