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的主要内容,如果未能解决你的问题,请参考以下文章
Elasticsearch:Apache spark 大数据集成
通俗易懂的Spring Boot 集成 ElasticSearch 7.6.0
hive 学习系列五(hive 和elasticsearch 的交互,很详细哦,我又来吹liubi了)