Hive 集成 ElasticSearch

Posted XXXL___Huo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hive 集成 ElasticSearch相关的知识,希望对你有一定的参考价值。

在hive中建表将字段映射到ES中;

hive映射表:

create table tablename(

id string,

name string,

addr string,

sex string

)

stored by 'org.elasticsearch.hadoop.hive.EsStorageHandler'

tblproperties(

'es.resource'='uqs_app_incmepn_year_format_2022',--es的索引,根据实际情况写

'es.nodes'='',--es集群地址,多个以逗号分隔

’es.port'='',--es端口号

'es.mapping.routing'='name',--指定es 的分片规则,可以指定表中的某个字段

'es.mapping.id'='id',--指定es的映射id,要唯一能确认一条数据,id重复的数据写入时会更新原有的数据

'es.mapping.exclude'='id',--指定表中哪个字段是不需要推送映射到es中的,根据实际业务来定是否需要,默认是都映射推送;  对应的 es.mapping.include指定哪些需要推送

'es.net.http.auth.user'='',--es用户名

'es.net.http.auth.pass'=''--es密码

);

建立映射表推送es 需要依赖两个jar包:

commons_httpclient_3.1.jar

下载地址:Central Repository: commons-httpclient/commons-httpclient

elasticsearch-hadoop-hive-7.9.1.jar

下载地址:https://www.elastic.co/cn/downloads/past-releases#es-hadoop

另外写入es 数据时,要考虑到es的version问题,一条数据第一次写入时,es 默认会给1,后面更新数据,或者insert相同id的数据进来,那这条数据的version会自动变成2;

es接收速率问题:

很多建议 es.batch.size.enries 调大,在测试环境7千万的数据,使用es.batch.size.enries的默认值时写入使用了17分钟,将es.batch.size.enries调到100mb时,使用了20多分钟;可能是因为测试环境不稳定,但是调整参数还是多测试,并不一定所有的参数都适用;

更多的请参考:

官网配置项解释:

Configuration | Elasticsearch for Apache Hadoop [8.3] | Elastic

以上是关于Hive 集成 ElasticSearch的主要内容,如果未能解决你的问题,请参考以下文章

HBase实践 —— hive-hbase交互集成实践总结

Elasticsearch:Apache spark 大数据集成

通俗易懂的Spring Boot 集成 ElasticSearch 7.6.0

hive 学习系列五(hive 和elasticsearch 的交互,很详细哦,我又来吹liubi了)

Spark hive to ES Elasticsearch

hive映射Elasticsearch时间date类型问题