数据生态第四弹 | OpenMLDB Hive Connector,架构起数据仓库到特征工程的生态桥梁

news2024/11/26 12:20:42

导读

近日,OpenMLDB 实现了与开源数据仓库软件 Hive 的连接,继完成与 Kafka、Pulsar、RocketMQ 等实时数据源生态整合后,持续构建离线数据生态,期待建设一个更加全面一体的上下游生态圈,在吸引更多用户的同时也能降低用户的使用门槛。

OpenMLDB Hive Connector

背景

OpenMLDB Hive Connector 的开发解决了 OpenMLDB 无法轻松连接使用 Hive 数据源的问题,利用其可以简单地对 Hive 数据进行读写,优化用户使用体验和降低时间成本
介绍
通过 OpenMLDB Hive Connector 可以连接 Hive 数据源,对其进行数据访问和元数据操作。Hive 数据源的访问通过 Hive Metastore Service (HMS)。在使用 Hive Connector 之前,要确保 HMS 已启动。
优势

  • Connector 联通 Hive 之后,只需配置好 Hive,就可以在 OpenMLDB 中用 hive:// 方式读写 Hive 表。
  • 学习成本低,易上手。Hive 是 Apache Hadoop 上的 SQL 接口,可以写 SQL 语句来对数据进行处理和运算。
    注意
  • 在使用 Hive Connector 之前,必须启动 HMS。
  • 目前只支持整表导入,不支持分区导入。

配置操作

OpenMLDB 版本要求:v0.6.7 及以上。

关键流程

  1. 启动 Hive 与 Hive metastore 服务
  2. OpenMLDB 配置 Hive metastore URI
  3. 启动 OpenMLDB 集群
  4. 测试——从 Hive 导入数据到 OpenMLDB 、从 OpenMLDB 导出数据到 Hive 表

具体操作

  1. Docker 上拉取并运行 OpenMLDB 镜像(镜像下载大小大约 1GB,解压后约 1.7 GB):
docker run -it 4pdosc/openmldb:0.6.7 bash
  1. 安装支持
    a. 安装 jdk8:Docker 镜像内默认为 jdk11,Hive 不支持 jdk11,建议安装 jdk8:
apt-get update && apt-get install -y gnupg2
curl -s https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public | apt-key add -
apt-get update && apt-get install -y adoptopenjdk-8-hotspot
export JAVA_HOME=/usr/lib/jvm/adoptopenjdk-8-hotspot-amd64
export PATH=$JAVA_HOME/bin:$PATH

b. 安装 Hadoop:

curl -SLO https://dlcdn.apache.org/hadoop/common/hadoop-3.2.3/hadoop-3.2.3.tar.gz
tar zxf hadoop-3.2.3.tar.gz
export HADOOP_HOME=`pwd`/hadoop-3.2.3
curl -SLO http://mirror.bit.edu.cn/apache/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gz
tar zxf apache-hive-3.1.3-bin.tar.gz
export HIVE_HOME=`pwd`/apache-hive-3.1.3-bin

c. 由于 Hadoop 和 Hive 的 Guava 版本不一致,运行以下命令调整为一致版本:

rm $HIVE_HOME/lib/guava-19.0.jar
cp $HADOOP_HOME/share/hadoop/common/lib/guava-27.0-jre.jar $HIVE_HOME/lib/
$HIVE_HOME/bin/schematool -dbType derby -initSchema
  1. 使用 Hive 客户端创建表
    使用 Hive 客户端创建表 htable(表会创建到默认数据库 default,如需使用其他数据库,请保证数据库已存在,OpenMLDB 不会自动创建 Hive 数据库);插入一条数据,可以查询出已插入的数据:
$HIVE_HOME/bin/hive
CREATE TABLE htable(key INT, value STRING NOT NULL);
INSERT INTO htable VALUES (NULL, "n"), (1,"a"), (2,"b");
SELECT * FROM htable;
  1. 启动 Hive metastore 服务(默认端口号为 9083):
$HIVE_HOME/bin/hive --service metastore > metastore.log 2>&1 &
  1. OpenMLDB 配置 Hive 连接,并启动 OpenMLDB 集群
    有多种方式配置 Hive 连接,具体请参考 Hive 配置文档。此处使用“在 taskmanager 配置文件中添加 Hive 连接配置”的方式。
    a. 打开 taskmanager 配置文件:
vim openmldb/conf/taskmanager.properties

b. 在 spark.default.conf 配置项中添加配置

spark.hadoop.hive.metastore.uris:
spark.default.conf=...;spark.hadoop.hive.metastore.uris=thrift://localhost:9083

c. 启动 OpenMLDB 集群:

/work/init.sh
  1. 从 Hive 导入数据到 OpenMLDB
    需要提前创建好 OpenMLDB 表 otable,使用 LOAD DATA 语句,只需使用 hive:// 前缀并指定 Hive 表名便可导入表中数据到 OpenMLDB 表 otable。支持导入到在线和离线。运行以下代码导入到离线:
CREATE DATABASE db;
USE db;
CREATE TABLE otable(key INT, value STRING NOT NULL);
SET @@sync_job=true;
SET @@job_timeout=600000;
LOAD DATA INFILE 'hive://htable' INTO TABLE otable OPTIONS(mode='overwrite');
  1. 将 OpenMLDB 表数据导出到 Hive
    使用 SELECT INTO 语句,同样路径只需要使用 hive:// 前缀并指定表名(表可以不存在,将自动创建)。
USE db;
SET @@sync_job=true;
SET @@job_timeout=600000;
SELECT * FROM otable INTO OUTFILE 'hive://hsaved' OPTIONS(mode='overwrite');

可以在 Hive 中查询到 hsaved 表,由于演示使用的是 derby 作为元数据库,请将 metastore 进程关闭后再使用 $HIVE_HOME/bin/hive 查询:

SELECT * FROM hsaved;

也可直接在 Hive 的保存目录中看到 hsaved 表:

ls /user/hive/warehouse/hsaved

写在最后

关于 OpenMLDB
OpenMLDB 是一个开源机器学习数据库,致力于闭环解决 AI 工程化落地的数据治理难题,为企业提供全栈的低门槛特征数据计算和管理平台。
OpenMLDB 包含 Feature Store 的全部功能,并且提供更为完整的 FeatureOps 全栈方案。除了提供特征存储功能,还具有基于 SQL 的低门槛数据库开发体验、面向特征计算优化的 OpenMLDB Spark 发行版、针对实时特征计算优化的索引结构、特征上线服务、企业级运维和管理等功能,让特征工程开发回归于本质——专注于高质量的特征计算脚本开发。
关于 Hive
Hive 是 Facebook 实现并开源的基于 Hadoop 的一个数据仓库工具。Hive 本质上将 SQL 语句转换为 MapReduce 任务运行,让不熟悉 MapReduce 编程模型的用户可以快速地使用 HiveQL 处理和计算存储在 HDFS 上的结构化数据,适用于离线的批量数据计算。Hive 适用于传统数仓业务,不适用于低延迟的交互访问。
生态上下游体系
为了降低开发者使用 OpenMLDB 的门槛,OpenMLDB 社区将持续打造面向上下游技术组件的生态圈,为开发者提供更多简单易用的生态 Connector。
file

  • 面向线上数据生态,如:Pulsar、Kafka、RocketMQ、Flink、RabbitMQ 等。
  • 面向离线数据生态,如: HDFS、Hive、MaxCompute、HBase、Cassandra、S3 等。
  • 面向模型构建的算法、框架,如:XGBoost、LightGBM、TensorFlow、PyTorch、OneFlow、ScikitLearn 等。
  • 面向机器学习建模全流程的调度框架、部署工具,如:DolphinScheduler、Airflow、Byzer、Kubeflow、Prometheus、Grafana 等。

相关阅读

OpenMLDB 文档:https://openmldb.ai/docs/zh/main/
OpenMLDB Hive Connector 产品文档:http://openmldb.ai/docs/zh/main/reference/sql/dml/LOAD_DATA_STATEMENT.html#hive
若您有相关问题,可以加入微信交流群:
file

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/88924.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【能效管理】AcrelEMS-UT综合管廊能效管理平台解决方案应用分析

平台概述 AcrelEMS-UT综合管廊能效管理平台集电力监控、能源管理、电气安全、照明控制、环境监测于一体,为建立可靠、安全、高效的综合管廊管理体系提供数据支持,从数据采集、通信网络、系统架构、联动控制和综合数据服务等方面的设计,解决了…

DC-4靶场教程

探测目标靶机,获取到ip arp-scan -l扫描开放的端口 masscan -p1-65535 192.168.250.213 --rate10000使用nmap获取端口、服务版本、系统等详细信息 nmap -sC -sV -p- -A -T4 192.168.250.213查看使用的中间件 whatweb http://192.168.250.213/访问80端口 没有其…

NLP 模型“解语如神”的诀窍:在文本分类模型中注入外部词典

一. 引言 现实世界的文本表述如恒河沙数,以惊人的速度变换着,人工智能(AI)在快速识别形形色色的文本之前,必须经过充足的训练数据洗礼。然而,面对复杂多变的文本表述,NLP 模型往往无法从有限的…

架构设计(一):从单服务器模式到负载均衡设计

架构设计(一):从单服务器模式到负载均衡设计 作者:Grey 原文地址: 博客园:架构设计(一):从单服务器模式到负载均衡设计 CSDN:架构设计(一&…

latex设置citation显示作者+年份

如果是bib文件分开放,并且每个引用都明确写了author和year,那么直接\citep 就可以,就能产生(abc et al., 2015) 这种格式, 如果你不想要圆括号,可以使用\usepackage[square]{natbib}, 也可以使用\setcitestyle{authoryear,open{(}…

java计算机毕业设计基于安卓Android的论坛App

项目介绍 首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库设…

【Kubernetes】Pod数据存储

kubernetes,是一个全新的基于容器技术的分布式架构领先方案,是谷歌严格保密十几年的秘密武器----Borg系统的一个开源版本,于2014年9月发布第一个版本,2015年7月发布第一个正式版本。 kubernetes的本质是一组服务器集群&#xff0…

时间序列异常检测(adtk)

1. 获取时间序列数据 未安装adtk的先安装:pip install adtk 2.阈值检测 adtk.detector.ThresholdAD(lowNone, highNone) 参数: low:下限,小于此值,视为异常 high:上限,大于此值,视为…

基于java+springboot+mybatis+vue+mysql的4S店车辆管理系统

项目介绍 任何系统都要遵循系统设计的基本流程,本系统也不例外,同样需要经过市场调研,需求分析,概要设计,详细设计,编码,测试这些步骤,基于java语言设计并实现了4S店车辆系统&#…

回溯3-----BFS(一石激起千层浪)

文章目录广度优先搜索力扣429-----N叉树的层序遍历力扣994-----腐烂的橘子力扣127 -------单词接龙力扣725------打开转盘锁广度优先搜索 需要借助 队列 来解决问题 例如二叉树的层序遍历 : 1, 将根节点入队 2, 队列出队的时候, …

第一章 OAuth2.0规范(史上最详细解释)——介绍

目录 一、简介 二、角色 二、协议流程 三、授权许可 1、授权码 2、隐式许可 3、资源所有者密码凭据 4、客户端凭据 四、访问令牌 五、刷新令牌 六、TLS版本 七、HTTP重定向 八、互操作性 九、符号约定 一、简介 在传统的客户端-服务器身份验证模式中,客…

docker搭建redis三种集群模式

文章目录一、主从复制1、新建修改配置文件2、执行命令启动redis3、启动客户端测试二、哨兵模式Sentinel1、修改配置文件2、启动sentinel进程3、测试三、集群模式Cluster1、搭建集群1.1、创建集群挂载文件1.2、修改配置文件1.3、docker启动先六个redis实例1.4、构建集群1.5、查看…

【Canvas系列】基础入门(一)

📚 Canvas基础入门 🔥 收藏关注随时温习 💻 在线地址方便浏览 在线学习/演示地址 Canvas API 提供了一个通过JavaScript 和 HTML的元素来绘制图形的方式。它可以用于动画、游戏画面、数据可视化、图片编辑以及实时视频处理等方面 —— MDN 一…

shell-条件

条件可以用test或【命令 符号和被检查的条件之间要留有空格 : if [ -f filename *** ] if 和then用于同一行 if [ ]; then 字符串比较: if [ string1 string2 ] 两个字符串相等为真 if [ string1 ! string2 ] 两个字符串不相等为假 …

web自动化测试:Selenium+Python基础方法封装

推荐阅读: [内部资源] 想拿年薪30W的软件测试人员,这份资料必须领取~ Python自动化测试全栈性能测试全栈,挑战年薪40W 正文 01 目的 web自动化测试作为软件自动化测试领域中绕不过去的一个“香饽饽”,通常都会作为广大测试从…

Fiddler(4):在fiddler会话栏中添加IP列,设置抓HTTPS的请求证书安装

Fiddler(4):在fiddler会话栏中添加IP列 在fiddler会话栏中添加IP列 1、点击菜单栏rules——customize rules…或者在右侧响应栏中点击FiddlerScript栏;如下图: 2、ctrlf搜索“static function main” 3、在main函数里加入下面一行代码&…

Kafka极客 - 09 Kafka Java Consumer 多线程开发实例

文章目录1. Kafka Java Consumer 设计原理2. 多线程方案3. 代码实现4. 问题思考目前,计算机的硬件条件已经大大改善,即使是在普通的笔记本电脑上,多核都已经是标配了,更不用说专业的服务器了。如果跑在强劲服务器机器上的应用程序…

对称美学 华为OD真题 100

import java.util.Scanner; import java.util.*; import java.util.stream.Collectors; import java.math.BigInteger;class Main {public static void main(String[] args) {// 处理输入Scanner in new Scanner(System.in);int t in.nextInt();long[][] cases new long[t][…

Python学习笔记-模块

目录 一、模块的概念 二、自定义模块 1.创建模块 2.使用import语句导入模块 3.使用from...import 语句导入模块 4.模块搜索目录 4.1模块默认搜索目录 4.2临时添加目录 4.3增加.pth文件 4.4 在PYTHONPATH环境变量中添加 三、以主程序的形式执行 四、python中的包&am…

计算机毕业设计php_thinkphp_vue的家乡石泉网站-乡村家乡旅游信息网站

运行环境 开发语言:PHP 数据库:MYSQL数据库 应用服务:apache服务器 使用框架:ThinkPHP:vue 开发工具:VScode/Dreamweaver/PhpStorm等均可 项目简介 目前家乡石泉市是一个有不同民族“大杂居,小聚居”的地方,所以对于发展家乡特色业还是比较有优势…