概述
准备工作
-
准备交互的jar包:elasticsearch-hadoop-6.5.4.jar
下载地址https://www.elastic.co/downloads/hadoop
-
准备一张有数据的hive表
我使用的是从mysql导入过来的表(information表)
./sqoop import --connect jdbc:mysql://localhost:3306/tsdn --username root --password 123456 --table information --hive-import --hive-table information -m 1
-
添加jar包到hive
add jar file:///jar包所在位置
Hive的数据写入到ES中
思路:创建一张与es有联系的hive表,将数据插入到这张表中,就写入到了es中
- 创建hive_es_information表
CREATE TABLE `hive_es_information`(
`id` bigint,
`title` string,
`description` string,
`thumb` string,
`content` string,
`type_id` int,
`source` string,
`author` string,
`create_time` string,
`view_num` int,
`up_num` int,
`update_time` string,
`comment_num` int
) STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler'
TBLPROPERTIES('es.resource'='hive2es/tsdn_info',
'es.nodes'='192.168.168.101',
'es.port'='9200',
'es.index.auto.create'='TRUE'
);
说明:
es.resource=索引/类型
nodes节点ip
-
向es_hive_information中插入数据
insert into hive_es_information select * from information
-
查看es中就会发现创建了名为hive2es的索引,类型名为tsdn_info
ES数据写入Hive
使用上面导入到es的数据,导出到hive
思路:在hive中创建外表表关联es,直接查询即可
- 创建info_es2hive1外部表
create external table info_es2hive1(
`id` bigint,
`title` string,
`description` string,
`thumb` string,
`content` string,
`type_id` int,
`source` string,
`author` string,
`create_time` string,
`view_num` int,
`up_num` int,
`update_time` string,
`comment_num` int
)
stored by 'org.elasticsearch.hadoop.hive.EsStorageHandler'
TBLPROPERTIES(
'es.nodes' = '192.168.168.101:9200',
'es.index.auto.create' = 'false',
'es.resource' = 'tsdn_info/info_type',
'es.read.metadata' = 'true'
);
如果字段名称不对应,可以在tblproperties中添加'es.mapping.names'
例如 'es.mapping.names'='my_id:id,name:name'
-
查询数据
select * from info_es2hive1;
加油!!
个人微信公众号【码农峰】,每天推送最新行业资讯,每周推送原创技术文章,欢迎关注。
最后
以上就是乐观书本为你收集整理的ES(五)ES与Hive之间的数据读写的全部内容,希望文章能够帮你解决ES(五)ES与Hive之间的数据读写所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复