背景:在整个运维内部数据仓库构建中,我们使用了Hadoop大数据生态圈中的组件来支撑运维数据的数据仓库构建。我们使用了Hive作为数据仓库工具,同时使用Hue来对整个运维数据进行管理和查询,最终根据部门需求生成结构化数据存入关系型或K/V型数据库,以供其他部门进行商业化决策。但是在使用command-line方式和hue上操作hive时,经常会有些许问题,并且灵活性交差,因此为了改善数据到Hive的加载过程以及对Hive库中数据的操作,借此机会使用PyHive库进行操作管理Hive.
本篇简单记录下使用Python操作Hive。
前言
我们当前整个ETL过程大概如下:
- 1.使用Python程序对各个维度的运维数据进行采集、加工和初步的清洗处理,按照一定的数据标准和数仓模型进行数据存储
- 2.将上述抽取出来的相对结构化的数据存储到HDFS集群中
- 3.使用Hive定期从HDFS集群中加载数据,并根据已有数据进行再次加工处理,并提取价值信息
ETL的质量问题具体表现为正确性、完整性、一致性、完备性、有效性、时效性和可获取性等几个特性。由于我们构建的运维数据仓库需要涉及到不同的数据源,且数据源的数据模型各不相同,为保证数据的正确性和完整性,数据加工过程选择在源数据库端执行,进行初步清洗加工后再进行转储到目标数据仓库中。
Python操作Hive
注意:想要使用hive,必须要有一个可用的hive集群,同时为了保证可用使用API操作hive,我们需要要求提供hiveserver2服务
假设我们的hiveserver2地址为10.0.1.18:10000
,且用户为hdfs
.使用PyHive库链接Hive.
安装pyhive模块
|
|
Python链接Hive以及基本使用
|
|
尝试用python脚本进行数据库操作
1. 数据库查询操作
|
|
2. 数据库更新操作
思考:其实数据库可以分为两种操作(读和写),一种为单纯的查询操作,不会对库表结构和数据造成变更,也即为读操作;另外一种为写操作,会对库表结构和数据造成的变更操作,也即写操作.
|
|
3. 进行数据加载和读取操作
注意:上面其实我们已经封装了两个抽象的读写方法,可以对hive表进行数据加载和读取操作了
|
|
4. 源码文件
|
|