写点什么

通过 ETL 导出 Hive 中的数据

作者:weigeonlyyou
  • 2023-02-27
    吉林
  • 本文字数:1514 字

    阅读完需:约 5 分钟

通过 ETL 导出 Hive 中的数据

什么是 Hive?

  • Hive 是在 Hadoop 分布式文件系统上运行的开源分布式数据仓库数据库,用于查询和分析大数据。

  • 数据以表格的形式存储(与关系型数据库十分相似)。数据操作可以使用名为 HiveQL 的 SQL 接口来执行。

  • HiveQL 默认情况下会转换成 MapReduce 进行计算(降低了开发难度),所以比较慢,常用于做离线数据分析场景,不适合做实时查询。

为什么选择 Hive?

  • Hive 是运行在 Hadoop 上的 SQL 接口。此外,它还降低了使用 MapReduce 框架编程的复杂性。

  • Hive 帮助企业在 HDFS 上执行大规模数据分析,使其成为一个水平可伸缩的数据库。

  • 通过 HiveSQL 使具有 RDBMS 背景的开发人员能够快速构建符合自己业务需求的数据仓库。

  • Hive 直接将数据存储在 HDFS 系统中,扩容等事宜都交由 HDFS 系统来维护。

如何将 Hive 中的分析数据导到业务系统中?

etl-engine 支持对 Hive 的读取,并输出到以下目标数据源:


  • 消息中间件(Kafka | RocketMQ);

  • 关系型数据库( Oracle | MySQL | PostgreSQL | Sqlite);

  • NoSQL(Elasticsearch | Redis);

  • 时序数据库( InfluxDB | ClickHouse | Prometheus);

  • 文件( Excel );


etl-engine 支持 None Kerberos 认证方式,适合测试环境及企业应用生产环境中的认证场景。


只需要二步 就完成 读 Hive 写 DB 操作

编写配置文件 hive_to_db.grf


<?xml version="1.0" encoding="UTF-8"?><Graph>
<Node id="HIVE_READER_01" dbConnection="CONNECT_02" type="HIVE_READER" desc="读Hive节点1" fetchSize="1000" > <Script name="sqlScript"><![CDATA[ select uuid,name,height,writetime from db_hive_edu.t_u_info ]]></Script> </Node> <Node id="DB_OUTPUT_01" type="DB_OUTPUT_TABLE" desc="写数据表节点1" dbConnection="CONNECT_01" outputFields="uuid;name;height;writetime" renameOutputFields="uuid;name;height;writetime" >
<Script name="sqlScript"><![CDATA[ insert into db1.t_hive_u_info (uuid,name,height,writetime) values (?,?,?,?) ]]></Script> </Node>

<Line id="LINE_01" type="STANDARD" from="HIVE_READER_01" to="DB_OUTPUT_01" order="0" metadata="METADATA_01"></Line>
<Metadata id="METADATA_01"> <Field name="uuid" type="int" default="-1" nullable="false"/> <Field name="name" type="string" default="-1" nullable="false"/> <Field name="height" type="float" default="-1" nullable="false"/> <Field name="writetime" type="string" default="-1" nullable="false"/> </Metadata>
<Connection id="CONNECT_02" dbURL="hadoop01:10000" database="db_hive_edu" username="Administrator" password="******" batchSize="1000" type="HIVE"/>
<Connection id="CONNECT_01" dbURL="127.0.0.1:3306" database="db1" username="root" password="******" batchSize="1000" type="MYSQL"/>
<!-- <Connection sortId="1" id="CONNECT_1" type="ORACLE" dbURL="127.0.0.1:1521" database="orcl" username="c##u1" password="******" /> --></Graph>
复制代码

执行命令

 etl_engine -fileUrl hive_to_db.grf -logLevel debug
复制代码


如此简单就完成了 读 hive 数据表 、写 mysql 数据表 操作。

参考资料


[免费下载](https://github.com/hw2499/etl-engine/releases) [etl-engine使用手册](https://github.com/hw2499/etl-engine) [etl-crontab使用手册](https://github.com/hw2499/etl-engine/wiki/etl-crontab%E8%B0%83%E5%BA%A6) [嵌入脚本开发](https://github.com/hw2499/etl-engine/wiki/%E5%B5%8C%E5%85%A5%E8%84%9A%E6%9C%AC%E5%BC%80%E5%8F%91)
复制代码


用户头像

weigeonlyyou

关注

还未添加个人签名 2022-12-26 加入

还未添加个人简介

评论

发布
暂无评论
通过 ETL 导出 Hive 中的数据_hadoop_weigeonlyyou_InfoQ写作社区