关于如何将Hive中的数据导入ES,官方的网站有了详细的介绍。
我这里用的ES的版本为5.6.14。CDH集群用的是cdh6.1.0。
官网地址
es-hadoop的GitHub地址
引入JAR包的方式比较多,这里参考博主qianshanding0708的文章:https://blog.csdn.net/qianshangding0708/article/details/50381966
ADD JAR /home/leehom/jar/elasticsearch-hadoop-7.5.1.jar
连接方式 | 是否有效 |
---|---|
Hive Shell | 不需要重启Hive服务就有效 |
Hive Server | 无效 |
在${HIVE_HOME}中创建文件夹auxlib,然后将自定义jar文件放入该文件夹中。
此方法添加不需要重启Hive。而且比较便捷。
连接方式 | 是否有效 |
---|---|
Hive Shell | 不需要重启Hive服务就有效 |
Hive Server | 重启Hive服务才生效 |
连接方式 | 是否有效 |
---|---|
Hive Shell | 重启Hive服务才生效 |
Hive Server | 重启Hive服务才生效 |
create external table test.ir_rec_depart_district(
district_id string COMMENT '行政区域id',
depart_district_id string COMMENT '出发地行政区域id',
product_id string COMMENT '产品ID',
category_id string COMMENT '品类ID',
tag_list_level1 string COMMENT '一级标签列表与权重',
tag_list_level2 string COMMENT '二级标签列表与权重',
tag_list_level3 string COMMENT '三级标签列表与权重',
browse_score decimal(12,8) COMMENT '浏览量归一化评分(90天)',
order_score decimal(12,8) COMMENT '订单量归一化评分(90天)',
collect_score decimal(12,8) COMMENT '收藏量归一化评分(90天)',
exposure_score decimal(12,8) COMMENT '搜索曝光量归一化评分(90天)',
click_score decimal(12,8) COMMENT '搜索点击量归一化评分(90天)',
favorable_score decimal(12,8) COMMENT '好评率加分(分值有点大的(0~1),建议乘以0.001或更小的权重后使用)',
up_browse_socre decimal(12,8) COMMENT '浏览量7日环比增量归一化评分',
up_order_score decimal(12,8) COMMENT '订单量7日环比增量归一化评分',
api_score_tf string COMMENT '自签评分【自签为10分,非自签为0分,在不同维度之间加权时能起到绝对作用,保证自签产品排最前】',
api_score string COMMENT '自签评分【自签为1分,非自签为0分,在不同维度之间加权时能起到想作用,提升自签产品的排名】')
STORED BY "org.elasticsearch.hadoop.hive.EsStorageHandler"
TBLPROPERTIES( 'es.nodes' = '10.95.3.172:9200,10.95.3.174:9200,10.95.3.231:9200', 'es.index.auto.create' = 'true','es.resource' = 'rec_depart_district/doc','es.mapping.id' = 'product_id');
insert overwrite table test.rec_depart_district
SELECT district_id, depart_district_id, product_id, category_id,
tag_list_level1, tag_list_level2, tag_list_level3, browse_score, order_score, collect_score,
exposure_score, click_score, favorable_score, up_browse_socre, up_order_score, api_score_tf, api_score from dml.dml_personalrec_dimrec_district_depart
limit 10;
之后会生成一个mapreduce任务,执行完之后就可以在elasticsearch中看到索引了。
补充一下在hive中设置队列以及mapreduce内存的方法。
hive --hiveconf mapreduce.job.queuename=leehom
set mapreduce.map.memory.mb=2048;//在进入hiveshell之后设置
set mapreduce.reduce.memory.mb=2048;
注意:jar包如果不引入完全的话,会报错。
缺少httpclient-4.5.5.jar
会报如下错误:
Error: java.lang.RuntimeException: java.lang.NoClassDefFoundError: org/apache/commons/httpclient/protocol/ProtocolSocketFactory
缺少org.apache.commons.httpclient.jar
会报如下错误:
Error: java.lang.RuntimeException: java.lang.NoClassDefFoundError: org/apache/commons/httpclient/Credentials
相关JAR包的下载地址
如有问题可以私信我,或者进入我的主页:指尖飞码的博客 留言。