hive etl 通过 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)
1 声望
0 粉丝
推荐阅读
dbtemplate 是什么
可嵌入到设备上,充当访问设备端数据库的中间件,也可以是小型WEB服务端的选择(当然要看你业务的复杂程度,基本上数据表的操作都能满足,适合快速交付使用)。
weigeonlyyou阅读 353
PLSQL一些常用的知识点
1、背景此处简单的记录一下在 oracle中如何使用plsql语法,记录一些简单的例子,防止以后忘记。2、变量的声明 {代码...} 3、if 判断统计总共有多少个学生,并进行if判断。 {代码...} 4、case {代码...} 5、循环输...
huan1993阅读 697
`hadoop fs -mkdir <path>` 创建的目录位置
linux创建文件夹命令mkdir 绝对路径 {代码...} mkdir 相对路径 {代码...} hadoop创建文件夹命令hadoop fs -mkdir 绝对路径 {代码...} hadoop fs -mkdir 相对路径 {代码...} [链接]
guyu阅读 629
hdfs开启回收站(废纸篓)
我们知道,在mac系统上删除文件,一般情况下是可以进入 废纸篓里的,如果此时我们误删除了,还可以从 废纸篓中恢复过来。那么在hdfs中是否存在类似mac上的废纸篓这个功能呢?答案是存在的。
huan1993阅读 580
HDFS Short-Circuit Local Reads
在HDFS中,读取操作通常是通过DataNode。因此,当客户端要读取文件时,DataNode 会从磁盘上读取文件,然后通过TCP套接字将数据发送给客户端。如果我们的客户端和数据在同一台机器上的时候, 那么是否可以绕过Data...
huan1993阅读 552
2023年第十二届数据技术嘉年华(DTC)资料分享
第十二届数据技术嘉年华(DTC 2023)已于4月8日在北京圆满落幕,大会围绕“开源·融合·数智化——引领数据技术发展,释放数据要素价值”这一主题,共设置有1场主论坛,12场专题论坛,68场主题演讲,汇聚“产学研”各界数...
墨天轮阅读 545
Hive事务
前提是设置 set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;使用DbTxnManager Db事务管理器
journey阅读 493
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。