写点什么

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

  • 2022-12-12
    新加坡
  • 本文字数:2667 字

    阅读完需:约 9 分钟

导读

近日,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 gnupg2curl -s https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public | apt-key add -apt-get update && apt-get install -y adoptopenjdk-8-hotspotexport JAVA_HOME=/usr/lib/jvm/adoptopenjdk-8-hotspot-amd64export PATH=$JAVA_HOME/bin:$PATH
复制代码


b. 安装 Hadoop:


curl -SLO https://dlcdn.apache.org/hadoop/common/hadoop-3.2.3/hadoop-3.2.3.tar.gztar zxf hadoop-3.2.3.tar.gzexport HADOOP_HOME=`pwd`/hadoop-3.2.3curl -SLO http://mirror.bit.edu.cn/apache/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gztar zxf apache-hive-3.1.3-bin.tar.gzexport HIVE_HOME=`pwd`/apache-hive-3.1.3-bin
复制代码


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


rm $HIVE_HOME/lib/guava-19.0.jarcp $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
复制代码

写在最后

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



  • 面向线上数据生态,如: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若您有相关问题,可以加入微信交流群:



用户头像

AI for every developer,AI for everyone 2021-06-21 加入

还未添加个人简介

评论

发布
暂无评论
数据生态第四弹 | OpenMLDB Hive Connector,架构起数据仓库到特征工程的生态桥梁_人工智能_第四范式开发者社区_InfoQ写作社区