hive通过外部表读写elasticsearch数据,和读写hbase数据差不多,差别是需要下载elasticsearch-hadoop-hive-6.6.2.jar,然后使用其中的EsStorageHandler;

Connect the massive data storage and deep processing power of Hadoop with the real-time search and analytics of Elasticsearch. The Elasticsearch-Hadoop (ES-Hadoop) connector lets you get quick insight from your big data and makes working in the Hadoop ecosystem even better.

官方:https://www.elastic.co/products/hadoop
下载:https://www.elastic.co/downloads/hadoop

目前最新的版本是6.6.2

# wget https://artifacts.elastic.co/downloads/elasticsearch-hadoop/elasticsearch-hadoop-6.6.2.zip
# unzip elasticsearch-hadoop-6.6.2.zip

使用其中的elasticsearch-hadoop-6.6.2/dist/elasticsearch-hadoop-hive-6.6.2.jar

add jar /path/to/elasticsearch-hadoop-hive-6.6.2.jar;

CREATE EXTERNAL TABLE hive_elasticsearch_table (
id string,
name string,
desc string
)
STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler'
TBLPROPERTIES(
'es.nodes' = '$es_server1:9200,$es_server2:9200',
'es.index.auto.create' = 'false',
'es.resource' = 'testdoc/testtype',
'es.read.metadata' = 'true',
'es.mapping.names' = 'id:_metadata._id, name:name, desc:desc');

主要是配置es.nodes、es.resource和es.mapping.names,一个是es服务器地址,一个是index名和type名,一个是hive字段和es字段的一一映射,然后就可以在hive中读写es数据:

select * from hive_elasticsearch_table limit 10;
insert into table hive_elasticsearch_table select '2', 'testname', 'testdesc';

但是这样发现id是被hash过的

+------------------------------+--------------------------------+--------------------------------+--+
| hive_elasticsearch_table.id | hive_elasticsearch_table.name | hive_elasticsearch_table.desc |
+------------------------------+--------------------------------+--------------------------------+--+
| 6mpoc2gBohlnD12tvBoF | testname | testdesc |
+------------------------------+--------------------------------+--------------------------------+--+

还需要再加一个es.mapping.id,定义哪个字段是document的id

CREATE EXTERNAL TABLE hive_elasticsearch_table (
id string,
name string,
desc string
)
STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler'
TBLPROPERTIES(
'es.nodes' = '$es_server1:9200,$es_server2:9200',
'es.index.auto.create' = 'false',
'es.resource' = 'testdoc/testtype',
'es.read.metadata' = 'true',
'es.mapping.id' = 'id',
'es.mapping.names' = 'id:_metadata._id, name:name, desc:desc');

这次正常了

+------------------------------+--------------------------------+--------------------------------+--+
| hive_elasticsearch_table.id | hive_elasticsearch_table.name | hive_elasticsearch_table.desc |
+------------------------------+--------------------------------+--------------------------------+--+
| 6mpoc2gBohlnD12tvBoF | testname | testdesc |
| 4 | hello | world |
+------------------------------+--------------------------------+--------------------------------+--+

关于字段类型映射,详见:https://www.elastic.co/guide/en/elasticsearch/hadoop/current/mapping.html

转载于:https://www.cnblogs.com/barneywill/p/10300951.html

【原创】大叔经验分享(26)hive通过外部表读写elasticsearch数据相关推荐

  1. 【原创】大叔经验分享(25)hive通过外部表读写hbase数据

    在hive中创建外部表: CREATE EXTERNAL TABLE hive_hbase_table( key string, name string, desc string ) STORED B ...

  2. hive删除hbase数据_Hive进阶:Hive通过外部表操作Hbase数据

    概述: HBase: 查询效率比较高,常为实时业务提供服务,但是其查询方式比较单一,只能通过row方式get单条数据,或者通过scan加过滤器的方式扫描数据表获取数据. Hive: hive用来存储结 ...

  3. 【原创】经验分享:一个小小emoji尽然牵扯出来这么多东西?

    前言 之前也分享过很多工作中踩坑的经验: 一个线上问题的思考:Eureka注册中心集群如何实现客户端请求负载及故障转移? [原创]经验分享:一个Content-Length引发的血案(almost-) ...

  4. hive 创建外部表产生java_(一)Hive表(管理表、外部表)的创建规则

    建表语句: CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment], ...

  5. Hive中外部表的alter与drop操作的最低权限要求

    Hive中外部表的alter与drop操作的最低权限要求: 操作类型 目录权限 数据权限 alter(如修改location) Read .write 0 Drop Read 0 Select Rea ...

  6. Hive创建外部表详细步骤

    Hive创建外部表详细步骤 一.创建外部表 二.hdfs建立文件夹存放数据 三.准备数据 四.上传数据到HDFS目录 五.Hive表关联文件得到数据 六.查询数据 一.创建外部表 create ext ...

  7. 通达OA系统2019版流程中心,外部表单提交数据到指定流程第一步

    通达OA系统2019版流程中心,外部表单提交数据到指定流程第一步 总体操作过程 具体操作过程 1.根据需要提交到流程的表单,新建表 2.系统管理员账号登录OA系统,按照 菜单>流程中心>工 ...

  8. 查看hive中某个表中的数据、表结构及所在路径

    查看hive中action_data_myisam表中的数据.表结构及所在路径 1.客户端进入hive环境:hive 2.查看表数据,鉴于数据量大,这里只显示前五条:select * from act ...

  9. Hadoop Hive创建外部表及多表join操作

    hive在drop内部表时会将数据一并删除,但在drop外部表时不会

  10. 2.5 Hive中外部表的讲解

    一.外部表 1.hive中表的类型 管理表 托管表(外部表) #内部表 >内部表也称之为MANAGED_TABLE: >默认存储在/user/hive/warehouse下,也可以通过lo ...

最新文章

  1. 网页上加在线客服代码QQ,MSN,skype,goolge TALK,雅虎通,贸易通,淘宝旺旺
  2. Undo TableSpace ②.回滚段研究
  3. python for循环文件每一行_python – 在使用for循环读取文件时跳过一行
  4. Doker : Docker 容器与宿主机共享文件
  5. ANSI C:+++
  6. Asp.net WebPages框架运行原理浅析(转)
  7. POST 一张 图像的调试来认识 http post
  8. .NET Core 管道
  9. 编码发生错误时,要注意文件之间的关联性问题!
  10. mysql ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing t
  11. Tomcat运行流程
  12. Java神鬼莫测之MyBatis多表操作延迟加载(四)
  13. 微软Hyper-V虚拟化技术全面体验
  14. python批量裁剪图片_python实现图片批量剪切示例
  15. Epoch Based Reclamation 的个人理解
  16. oracle 判断数字是否连续,oracle中 如何 判断 表中字段是否为 连续的数字,例如‘3333333333',‘44444444’...
  17. 基于PHP+Html+mysql的客户关系管理CRM系统 文档+项目源码及数据库文件
  18. 【YOLACT】测试自己数据集
  19. Hive SQL复杂场景实现(1) —— 连续发单天数
  20. linux shell编写脚本,执行命令同时操作多台主机

热门文章

  1. ASP.NET:返回按钮的解决方案摸索
  2. Eclipse中的快捷键……希望朋友们能熟练使用
  3. POJ 1166 The Clocks
  4. perl Makefile.PL;make;make install 安装时报错
  5. JAVA基础----java中T,?的区别
  6. 宝贝,后端接口如何提高性能?
  7. 我为什么离开国企,回到互联网内卷?
  8. 还在手写 Nginx 配置?试试这款可视化配置神器,太强了!
  9. 老板要我开发一个简单的工作流,15 次需求变更,我干到秃了。。
  10. 程序员翻车时的 30 种常见反应!第21个深有感触...