本文将详细介绍利用 ES 与 Hive 直接的数据交互;通过 Hive 外部表的方式,可以快速将 ES 索引数据映射到 Hive 中,使用易于上手的 Hive SQL 实现对数据的进一步加工。
一、开发环境
1、组件版本
- CDH 集群版本:6.0.1
- ES 版本:6.5.1
- Hive 版本:2.1.1
- ES-Hadoop 版本:6.5.1
2、Hive 简介
Hive 在 Hadoop 生态系统中扮演着数据仓库的角色,借助 Hive 可以方便地进行数据汇总、即席查询以及分析存储在 Hadoop 文件系统中的大型数据集。
Hive 通过类 SQL 语言(HSQL)对 Hadoop 上的数据进行抽象,这样用户可以通过 SQL 语句对数据进行定义、组织、操作和分析;在 Hive 中,数据集是通过表(定义了数据类型相关信息)进行定义的,用户可以通过内置运算符或用户自定义函数(UDF)对数据进行加载、查询和转换。
3、Hive 安装 ES-Hadoop
官方推荐的安装方式:
使用 add jar
add jar /path/elasticsearch-hadoop.jar
使用 hive.aux.jars.path
$ bin/hive --auxpath=/path/elasticsearch-hadoop.jar
修改配置(hive-site.xml)
<property> <name>hive.aux.jars.path</name> <value>/path/elasticsearch-hadoop.jar</value> <description>A comma separated list (with no spaces) of the jar files</description></property>
CDH6.X 推荐的安装方法
将 elasticsearch-hadoop.jar 复制到 Hive 的 auxlib 目录中,然后重启 Hive 即可。
cp elasticsearch-hadoop.jar /opt/cloudera/parcels/CDH/lib/hive/auxlib/
二、Hive 与 ElasticSearch 的数据交互
1、数据类型对照表
请务必注意,ES 中的类型是 index/_mapping 中对应的数据类型,非 _source 里面数据的类型。