前言:
最近收到一个新的数据统计需求,分析用户打开文件记录,由于每天的记录数有1000w+,且需要统计维度较多,之前采用emr分析结果导出到mysql在展示的方案已经不在适用这个需求,所以决定启用elasticsearch来实现这个需求,刚好后面的搜索需求也会需要用到,这边讲一下在使用过程中遇到的一些问题;
- 安装elasticsearch和kibana
https://www.elastic.co/products 从官网下载最新的tar包解压即可、配置ip(默认只有本机可以访问),
访问 5601端口进入kibana控制台,使用dev tools进行测试;
正式环境上直接使用了阿里云的elasticsearch服务;
- hive数据导入到elasticsearch
首先需要添加elasticsearch-hadoop-xx.jar到hive的lib下;
hive导入elasticsearch可以参考官方文档https://www.elastic.co/guide/en/elasticsearch/hadoop/2.0/hive.html#hive-alias
也比较简单,就是创建外部表、然后插入数据即可;这边比较纳闷的是官方文档中居然没有关于用户身份验证的参数https://www.elastic.co/guide/en/elasticsearch/hadoop/2.0/configuration.html,最后还是在https://yq.aliyun.com/articles/603377?spm=a2c4e.11163080.searchblog.25.5f052ec1Tzk6yj 这篇文章中找到
CREATE EXTERNAL table IF NOT EXISTS employees(
id BIGINT,
name STRING,
birth TIMESTAMP,
addr STRING
)
STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler'
TBLPROPERTIES(
'es.resource' = 'tpcds/ss',
'es.nodes' = '<your_es_host>',
'es.net.http.auth.user' = '<your_username>',
'es.net.http.auth.pass' = '<your_password>',
'es.nodes.wan.only' = 'true',
'es.resource' = 'company/employees'
);
到此hive导入elasticsearch就算是完成了,接下去就是kibana的使用了;