当前位置: 首页 > news >正文

使用es-hadoop同步hive和es之间数据

💻近期在华为云连接es时的时候发现不能输入账号密码,后面联系华为工程师了解到,华为云默认是非安全模式,即不需要输入账号密码。

如果对你有所帮助,欢迎点赞收藏关注不迷路哦💓

目录

使用es-hadoop同步hive和es之间数据

1. 登录EMR的master节点,切换至hadoop用户

2.在MRS客户端创建HDFS目录,将ES-Hadoop lib包和httpclient依赖包上传到该目录下

3.从MRS客户端登录到Hive客户端

4.在Hive客户端,创建hive外表,与es索引进行映射(结合实际表)

4.1安全模式+HTTP协议的集群

4.2安全模式+HTTPS协议的集群

4.2.1获取安全证书“CloudSearchService.cer”

4.2.2转换安全证书(CloudSearchService.cer)

4.2.3将“.jks”文件分发到MRS集群的每个节点的相同路径

4.2.4创建Hive外表

5. 查询ES外部表测试

6.将ES索引中的数据导入到hive的内部表或写入ES外部表


解决方案,如下:

前言

ES-Hadoop 是 Elastic 官方推出的一个用于对接 Hadoop 生态的工具,使得用户可以使用 Mapreduce(MR)、Spark、Hive 等工具处理 ES 上的数据。众所周知,Hadoop 生态的长处是处理大规模数据集,但是其缺点也很明显,就是当用于交互式分析时,查询时延会比较长。而 ES 在这几个方面的能力很强,对于如 ad-hoc 查询,基本可以做到秒级。ES-Hadoop 的推出提供了一种组合两者优势的可能性。使用 ES-Hadoop,用户只需要对自己代码做出很小的改动,即可以快速处理存储在 ES 中的数据,并且能够享受到 ES 带来的加速效果。

以下给出hive相关操作

使用es-hadoop同步hive和es之间数据

相关下载链接: ES-hadoop:(https://www.elastic.co/cn/downloads/past-releases#es-hadoop)选择需要的版本

httpclient3.1:(https://mvnrepository.com/artifact/commons-httpclient/commons-httpclient/3.1)

1. 登录EMR的master节点,切换至hadoop用户

su - hadoop

2.在MRS客户端创建HDFS目录,将ES-Hadoop lib包和httpclient依赖包上传到该目录下

注:暂定7.10.2版

hadoop fs -mkdir /tmp/hadoop-es
hadoop fs -put elasticsearch-hadoop-7.10.2.jar /tmp/hadoop-es
hadoop fs -put commons-httpclient-3.1.jar /tmp/hadoop-es

3.从MRS客户端登录到Hive客户端

在Hive客户端,添加ES-Hadoop lib包和httpclient依赖包。该命令只对当前会话有效。

输入beelinehive进入到执行界面,执行如下命令:

add jar hdfs:///tmp/hadoop-es/commons-httpclient-3.1.jar;
add jar hdfs:///tmp/hadoop-es/elasticsearch-hadoop-7.10.2.jar;

4.在Hive客户端,创建hive外表,与es索引进行映射(结合实际表)

4.1安全模式+HTTP协议的集群
CREATE EXTERNAL table IF NOT EXISTS student( id BIGINT,name STRING,addr STRING 
)STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler' 
TBLPROPERTIES(  'es.nodes' = '172.XX.XX.XX:9200,172.XX.XX.XX:9200,172.XX.XX.XX:9200',--ES地址'es.port' = '9200','es.net.ssl' = 'false', --指定不使用SSL连接到Elasticsearch。'es.nodes.wan.only' = 'false', --指定是否只使用广域网节点'es.nodes.discovery'='false', --禁用节点发现,即不自动发现其他节点'es.input.use.sliced.partitions'='false', --指定在读取数据时不使用分片分区'es.nodes.client.only'='true',--指定节点仅作为客户端使用。'es.resource' = 'student/_doc', --指定映射到Elasticsearch中的索引名称为student,文档类型为_doc。'es.net.http.auth.user' = 'NAME', --ES用户名'es.net.http.auth.pass' = 'PASSWORD' --ES密码
);
4.2安全模式+HTTPS协议的集群
4.2.1获取安全证书“CloudSearchService.cer”
  1. 登录云搜索服务控制台。

  2. 选择“集群管理”进入集群列表。

  3. 单击对应集群的名称,进入集群基本信息页面。

  4. 在“基本信息”页面,单击“HTTPS访问”后面的“下载证书”。

4.2.2转换安全证书(CloudSearchService.cer)

将下载的安全证书上传到客户端机器上,使用keytool工具将“.cer”证书转换成Java可以读取的“.jks”证书格式。

  • 在Linux系统中,执行如下命令转换证书。

keytool -import -alias newname -keystore ./truststore.jks -file ./CloudSearchService.cer 
  • 在Windows系统中,执行如下命令转换证书。

keytool -import -alias newname -keystore .\truststore.jks -file .\CloudSearchService.cer

注:其中,newname是由用户自定义的证书名称。

该命令执行后,会提示设置证书密码,并确认密码。请保存该密码,后续接入集群会使用。

4.2.3将“.jks”文件分发到MRS集群的每个节点的相同路径

如“/tmp”,可以使用scp命令进行文件传输。同时,要确保omm用户有权限读取该文件,设置权限可以参考如下命令:

chown -R omm truststore.jks
4.2.4创建Hive外表
CREATE EXTERNAL table IF NOT EXISTS student( id BIGINT,name STRING,addr STRING 
)STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler' 
TBLPROPERTIES(  'es.nodes' = 'https://172.XX.XX.XX:9200,https://172.XX.XX.XX:9200,https://172.XX.XX.XX:9200',--ES地址'es.port' = '9200','es.net.ssl' = 'true', -- 使用SSL连接'es.net.ssl.truststore.location' = 'cerFilePath',- SSL信任存储文件路径'es.net.ssl.truststore.pass' = 'cerPassword',-- SSL信任存储密码'es.nodes.wan.only' = 'false',  -- 不只使用广域网节点'es.nodes.discovery'='false', -- 禁用节点发现'es.nodes.client.only'='true', -- 节点仅作为客户端使用'es.input.use.sliced.partitions'='false', -- 不使用分片分区读取'es.resource' = 'student/_doc',-- 映射到Elasticsearch的索引和文档类型'es.net.http.auth.user' = 'NAME', -- 映射到Elasticsearch的索引和文档类型'es.net.http.auth.pass' = 'PASSWORD'-- 连接到Elasticsearch的密码
);

5. 查询ES外部表测试

在Hive客户端,插入数据。

INSERT INTO TABLE student VALUES (1, "Lucy", "address1"), (2, "Lily", "address2");

查询

select * from student;

6.将ES索引中的数据导入到hive的内部表或写入ES外部表

-- 检查并删除已存在的同名内部表,如果需要的话
DROP TABLE IF EXISTS student_hive;-- 创建一个与外部表结构相同的Hive内部表
CREATE TABLE student_hive
LIKE student;-- 插入数据从外部表student到内部表student_hive
INSERT INTO TABLE student_hive
SELECT * FROM student;

赞👍

相关文章:

使用es-hadoop同步hive和es之间数据

💻近期在华为云连接es时的时候发现不能输入账号密码,后面联系华为工程师了解到,华为云默认是非安全模式,即不需要输入账号密码。 如果对你有所帮助,欢迎点赞收藏关注不迷路哦💓 目录 使用es-hadoop同步h…...

Java - 泛型 + JUnit

一、泛型(参数化类型,在编译时确定) 泛型是一种可以接收数据类型的数据类型(可以这么理解) 作用: 1.能对加入到集合中的数据类型进行约束 2.遍历的时候,不需要进行类型转换,提高效率(因为遍历时,默认的是Object,需要进行类型转换的…...

vue3实现包含表格的Word文件导出

vue3实现包含表格的Word文件导出 近期遇到一个要求,需要在网页上导出Word文档,文档中有表格,也有普通的数据,查阅了很多资料,总算比较完美的解决了,记录一下 先上一下最终效果 演示视频 vue3项目根据Wor…...

【深度学习】TTS,CosyVoice,推理部署的代码原理讲解分享

文章目录 demo代码加载配置文件speech_tokenizer_v1.onnx(只在zero_shot的时候使用)campplus.onnx(只为了提取说话人音色embedding)`campplus_model` 的作用代码解析具体过程解析总结示意图CosyVoiceFrontEndCosyVoiceModel推理过程总体推理过程推理速度很慢: https://git…...

flask高频面试题

目录 高频面试题及答案1. 如何在Flask中处理数据库迁移?2. Flask如何处理文件上传?3. 如何在Flask中处理跨域请求(CORS)?4. 如何在Flask中实现用户认证?5. Flask如何处理会话?6. Flask如何处理表…...

尚硅谷谷粒商城项目笔记——五、使用docker安装mysql

五、使用docker安装mysql 注意: 因为电脑是AMD芯片,自己知识储备不够,无法保证和课程中用到的环境一样,所以环境都是自己根据适应硬件软件环境重新配置的,这里的虚拟机使用的是VMware。 使用 Docker 安装 MySQL 与安…...

filebeat + logstash使用笔记

背景 本文中有2台主机: (1)1.1.1.1是OpenStack的nova节点,安装filebeat (2)1.1.1.2是logstash节点 在1.1.1.1上通过filebeat读取OpenStack的nova-compute组件日志(/var/log/nova/nova-compute.…...

学校考场电子钟设置自动开关机,节能环保

在标准化考试中,准确的时间显示对于确保考试的公正性和秩序至关重要。然而,传统的电子钟系统往往存在一些问题,影响了考试管理的效率。 一、学校普通电子钟使用问题 二、学校考场电子钟优点 学校同步时钟系统通过自动同步网络或卫星时间的方式…...

短剧APP系统开发带来了哪些发展空间?

在影视行业快速发展的时期,短剧作为一种新兴的影视模式,获得了大众的欢迎。目前,短剧行业巨大的发展空间,再次成为大众关注的焦点。 随着移动互联网的发展,信息技术不断升级进步,短剧APP系统的开发&#x…...

PaddlePaddle / PaddleOCR踩坑记,动手实现一个OCR服务器

文章目录 一、环境搭建1、官网2、准备环境 二、编码实现一个web程序 一、环境搭建 1、官网 https://gitee.com/paddlepaddle/PaddleOCR#/paddlepaddle/PaddleOCR/blob/main/doc/doc_ch/quickstart.md 2、准备环境 本地环境坑太多了,好在官网还有一种基于docker搭…...

JeecgBoot低代码平台简单记录

BasicModal弹窗 Usage 由于弹窗内代码一般作为单文件组件存在,也推荐这样做,所以示例都为单文件组件形式 注意v-bind"$attrs"记得写,用于将弹窗组件的attribute传入BasicModal组件 attribute:是属性的意思,…...

零基础入门转录组数据分析——机器学习算法之xgboost(筛选特征基因)

零基础入门转录组数据分析——机器学习算法之xgboost(筛选特征基因) 目录 零基础入门转录组数据分析——机器学习算法之xgboost(筛选特征基因)1. xgboost基础知识2. xgboost(Rstudio)——代码实操2. 1 数据…...

C#开发常见面试题三(浅复制和深复制的区别)

C#开发常见面试题三(浅复制和深复制的区别) 一.浅复制和深复制定义 (1)浅复制:复制一个对象的时候,仅仅复制原始对象中所有的非静态类型成员和所有的引用类型成员的引用。(新对象和原对象将共享所有引用类型成员的实…...

Linux/C 高级——Linux命令

从这里开始,我们展开对Linux/c 高级的学习,首先介绍的是在Linux/c高级中,Linux的部分 目录 1.Linux简介 1.1Linux起源 1.2查看系统版本命令 1.3分层结构 1.4系统关机重启命令 2.Linux安装工具 2.1软件包安装 2.1.1软件包的管理机制 …...

怎么在 tailwindcss 项目中自定义一些可复用的样式

在 Tailwind CSS 项目中自定义可复用的样式有几种常用方法: 使用 apply 指令 你可以在 CSS 文件中使用 apply 指令来创建可复用的样式类: layer components {.btn-primary {apply py-2 px-4 bg-blue-500 text-white font-semibold rounded-lg shadow-md hover:bg-blue-700 f…...

在vue3中 引入echarts

安装&#xff1a;npm install echarts --save 方式一&#xff1a;直接在组件中引用 <template><divref"myChart"id"myChart":style"{ width: 800px, height: 400px }"></div></template><script>import * as echa…...

栈和队列(数据结构)

1. 栈(Stack) 1.1 概念 栈 &#xff1a;一种特殊的线性表&#xff0c;其 只允许在固定的一端进行插入和删除元素操作 。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO &#xff08; Last In First Out &#xff09;的原…...

如何实现ElementUI表单项label的文字提示?

在Vue和ElementUI的丰富组件库中,定制化表单是常见的需求之一。那么如何在表单项label后添加文字提示,以提升用户体验呢? 首先我们来看一下效果图: 这里我们鼠标移动到❓图标上就会出现提示 在 ElementUI 中,el-form-item 组件允许使用 slot 自定义 label。通过在 el-fo…...

c++中的标准库

前言 hello&#xff0c;我是文宇。 正文 C标准库是C编程语言的基本组成部分之一&#xff0c;它为开发人员提供了一套丰富和强大的工具和功能&#xff0c;以便快速开发高效、可靠和可移植的应用程序。C标准库由两个主要部分组成&#xff1a;STL&#xff08;Standard Template…...

洛谷 B2145 digit 函数 B2146 Hermite 多项式 题解

题目目录&#xff1a; No.1 B2145 digit 函数 No.2 B2146 Hermite 多项式 OK&#xff0c;开始正文&#xff01; 第一题&#xff1a;B2145 digit 函数 题目描述 在程序中定义一函数 digit(n,k)&#xff0c;它能分离出整数 n 从右边数第 k 个数字。 输入格式 正整数 n …...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; 思路 使用两个栈&#xff1a;一个存储重复次数&#xff0c;一个存储字符串 遍历输入字符串&#xff1a; 数字处理&#xff1a;遇到数字时&#xff0c;累积计算重复次数左括号处理&#xff1a;保存当前状态&a…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

Netty从入门到进阶(二)

二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架&#xff0c;用于…...

wpf在image控件上快速显示内存图像

wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像&#xff08;比如分辨率3000*3000的图像&#xff09;的办法&#xff0c;尤其是想把内存中的裸数据&#xff08;只有图像的数据&#xff0c;不包…...

0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化

是不是受够了安装了oracle database之后sqlplus的简陋&#xff0c;无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话&#xff0c;配置.bahs_profile后也能解决上下翻页这些&#xff0c;但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可&#xff0c…...

OCR MLLM Evaluation

为什么需要评测体系&#xff1f;——背景与矛盾 ​​ 能干的事&#xff1a;​​ 看清楚发票、身份证上的字&#xff08;准确率>90%&#xff09;&#xff0c;速度飞快&#xff08;眨眼间完成&#xff09;。​​干不了的事&#xff1a;​​ 碰到复杂表格&#xff08;合并单元…...