前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Elasticsearch与Hive的数据互导

Elasticsearch与Hive的数据互导

原创
作者头像
dandelion1990
发布2019-06-27 16:11:45
6.2K2
发布2019-06-27 16:11:45
举报

首先先下载一个叫"elasticsearch-hadoop-hive"的JAR包,放到相应路径下:https://jar-download.com/artifacts/org.elasticsearch/elasticsearch-hadoop-hive

Hive数据导入Elasticsearch

1. 在ES中建立index,并定义数据格式和属性

代码语言:txt
复制
  PUT /index_name
  {
    "mappings": {
      "_doc": {
        "properties": {
          "field1": {"type": "keyword"},
          "field2": {"type": "integer"}
        }
      }
    },
    "settings": {
      "number_of_replicas": 0
    }
  }

建index的API可以参考https://www.elastic.co/guide/en/elasticsearch/reference/7.2/indices-create-index.html

定义ES中数据格式可以参考https://www.elastic.co/guide/en/elasticsearch/reference/7.2/mapping-types.html

2. 在Hive中建立定义映射关系外部表

代码语言:txt
复制
add jar path/to/elasticsearch-hadoop-6.4.2.jar;
CREATE EXTERNAL TABLE index_name_to_es (
    field1 string,
    field2 int
    )
STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler'
TBLPROPERTIES('es.resource' = 'index_name/_doc',
    'es.index.auto.create' = 'false',
    'es.nodes' = 'http://XXX.XXX.XXX.XXX',
    'es.port'='9200'
);

也可以不用做第一步提前在ES中建index,让ES自动解析数据类型,那么这里建外部表时设置属性'es.index.auto.create' = 'true'

3. 导入数据

代码语言:txt
复制
add jar path/to/elasticsearch-hadoop-6.4.2.jar;
insert overwrite table index_name_to_es
select field1, field2
from index_name;

Elasticsearch数据导入Hive

与上面类似,不过步骤反过来

1. 在Hive中建好存数据的管理表

代码语言:txt
复制
create table index_name (
    field1 string,
    field2 int
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'
LINES TERMINATED BY '\n';

2. 在Hive中建立定义映射关系外部表

代码语言:txt
复制
add jar path/to/elasticsearch-hadoop-6.4.2.jar;
CREATE EXTERNAL TABLE index_name_from_es (
    field1 string,
    field2 int
)
STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler'
TBLPROPERTIES('es.resource' = 'index_name/_doc',
    'es.query' = '?q=field2:[100 TO 1000]',
    'es.nodes' = 'http://XXX.XXX.XXX.XXX',
    'es.port'='9200'
);

这里可以把ES的过滤条件写在es.query的属性中,例如上例中只查询filed2字段在范围100到1000以内的数据。

query的写法可以参考https://www.elastic.co/guide/en/elasticsearch/reference/7.2/search-uri-request.html

3. 导入数据

代码语言:txt
复制
add jar path/to/elasticsearch-hadoop-6.4.2.jar;
insert overwrite table index_name
select filed1, field2
from  index_name_from_es;

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Hive数据导入Elasticsearch
    • 1. 在ES中建立index,并定义数据格式和属性
      • 2. 在Hive中建立定义映射关系外部表
        • 3. 导入数据
        • Elasticsearch数据导入Hive
          • 1. 在Hive中建好存数据的管理表
            • 2. 在Hive中建立定义映射关系外部表
              • 3. 导入数据
              相关产品与服务
              Elasticsearch Service
              腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档