一 下载 es-hadoop.jar 放到HDFS上, es-hadoop版本要跟 ElasticSearch版本对应
二 创建外部表
create external table if not exists tags_ec_userprofile.ec_tbl_logs(
-- 字段名字
)
stored by 'org.elasticsearch.hadoop.hive.EsStorageHandler'
tblproperties('es.resource'='ec_tbl_logs', -- index的名字
'es.nodes'='up01:9200', -- es机器节点信息
'es.index.auto.create'='TRUE', -- 索引自动创建
'es.index.refresh_interval' = '-1', -- 定时refresh关闭, 减少refresh次数, 加快导数据过程
'es.index.number_of_replicas' = '0', -- es8 可以设置number_of_replicas 副本数量为0 目的加快导数据速度
'es.batch.write.retry.count' = '6', -- 重试次数
'es.batch.write.retry.wait' = '60s' -- 等待超时时间
'es.mapping.names'='' -- 如果hive字段信息和ES字段有区别, 可以通过这个配置进行修改 hive字段名字:es字段名字,
-- 如果字段不需要修改的话, 这个可以不配置
-- hive表字段名 跟 es表的字段名字不一致需要配置这个mapping names
-- 注意这些配置信息, 不要手敲, 如果写错了不报错, 只是没有效果
);
-- 使用外部表的原因, 数据实际上没在HDFS上 是在ES集群里, 创建这个外部表实际上就是给es-hadoop传参
三 add jar 把es-hadoopjar包添加到hive classpath下边 add jar 后面接.jar的路径
add jar hdfs:///libs/es-hadoop/elasticsearch-hadoop-7.10.2.jar;
四 把数据从数仓Hive表中查询出来, 插入到刚创建的外部表中(导入到ES中)
insert overwrite table tags_ec_userprofile.ec_tbl_users select * from tags_dat2.tbl_users;