我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python ETL工具 pyetl

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python ETL工具 pyetl

python ETL工具 pyetl

pyetl是一个纯python开发的ETL框架, 相比sqoop, datax 之类的ETL工具,pyetl可以对每个字段添加udf函数,使得数据转换过程更加灵活,相比专业ETL工具pyetl更轻量,纯python代码操作,更加符合开发人员习惯

安装

pip3 install pyetl

使用示例

数据库表之间数据同步

from pyetl import Task, DatabaseReader, DatabaseWriter
reader = DatabaseReader("sqlite:///db1.sqlite3", table_name="source")
writer = DatabaseWriter("sqlite:///db2.sqlite3", table_name="target")
Task(reader, writer).start()

数据库表到hive表同步

from pyetl import Task, DatabaseReader, HiveWriter2
reader = DatabaseReader("sqlite:///db1.sqlite3", table_name="source")
writer = HiveWriter2("hive://localhost:10000/default", table_name="target")
Task(reader, writer).start()

数据库表同步es

from pyetl import Task, DatabaseReader, ElasticSearchWriter
reader = DatabaseReader("sqlite:///db1.sqlite3", table_name="source")
writer = ElasticSearchWriter(hosts=["localhost"], index_name="tartget")
Task(reader, writer).start()

原始表目标表字段名称不同,需要添加字段映射

# 原始表source包含uuid,full_name字段
reader = DatabaseReader("sqlite:///db.sqlite3", table_name="source")
# 目标表target包含id,name字段
writer = DatabaseWriter("sqlite:///db.sqlite3", table_name="target")
# columns配置目标表和原始表的字段映射关系
columns = {"id": "uuid", "name": "full_name"}
Task(reader, writer, columns=columns).start()

添加字段的udf映射,对字段进行规则校验、数据标准化、数据清洗等

# functions配置字段的udf映射,如下id转字符串,name去除前后空格
functions={"id": str, "name": lambda x: x.strip()}
Task(reader, writer, columns=columns, functions=functions).start()

继承Task类灵活扩展ETL任务

import json
from pyetl import Task, DatabaseReader, DatabaseWriter

class NewTask(Task):
    reader = DatabaseReader("sqlite:///db.sqlite3", table_name="source")
    writer = DatabaseWriter("sqlite:///db.sqlite3", table_name="target")
    
    def get_columns(self):
        """通过函数的方式生成字段映射配置,使用更灵活"""
        # 以下示例将数据库中的字段映射配置取出后转字典类型返回
        sql = "select columns from task where name="new_task""
        columns = self.writer.db.read_one(sql)["columns"]
        return json.loads(columns)
      
    def get_functions(self):
        """通过函数的方式生成字段的udf映射"""
        # 以下示例将每个字段类型都转换为字符串
        return {col: str for col in self.columns}
      
    def apply_function(self, record):
        """数据流中对一整条数据的udf"""
        record["flag"] = int(record["id"]) % 2
        return record

    def before(self):
        """任务开始前要执行的操作, 如初始化任务表,创建目标表等"""
        sql = "create table destination_table(id int, name varchar(100))"
        self.writer.db.execute(sql)
    
    def after(self):
        """任务完成后要执行的操作,如更新任务状态等"""
        sql = "update task set status="done" where name="new_task""
        self.writer.db.execute(sql)

NewTask().start()

目前已实现Reader和Writer列表

Reader介绍
DatabaseReader 支持所有关系型数据库的读取
FileReader 结构化文本数据读取,如csv文件
ExcelReader Excel表文件读取





 

 

Writer介绍
DatabaseWriter 支持所有关系型数据库的写入
ElasticSearchWriter 批量写入数据到es索引
HiveWriter 批量插入hive表
HiveWriter2 Load data方式导入hive表(推荐)
FileWriter 写入数据到文本文件

 

 

 

 

 

 

 

 

使用过程中有任何疑问,欢迎评论交流

项目地址pyetl

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python ETL工具 pyetl

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python ETL工具 pyetl

pyetl是一个纯python开发的ETL框架, 相比sqoop, datax 之类的ETL工具,pyetl可以对每个字段添加udf函数,使得数据转换过程更加灵活,相比专业ETL工具pyetl更轻量,纯python代码操作,更加符合开发人员习惯安装pip3 i
python ETL工具 pyetl
2019-09-29

用于ETL的Python数据转换工具

前几天,我去Reddit询问是否应该将Python用于ETL相关的转换,并且压倒性的回答是\"是\"。

用于ETL的Python数据转换工具有哪些

这篇文章主要讲解了“用于ETL的Python数据转换工具有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“用于ETL的Python数据转换工具有哪些”吧!Pandas网站:https://
2023-06-16

ETL工具sed进阶是怎么样的

ETL工具sed进阶是怎么样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。sed 详解我觉得 sed 玩到最后,应该触及的最高难度的问题,有这些:替换百万行文
2023-06-06

ETL数据导入导出工具HData使用

注:近期因朋友的请求协助了解Hdata工具的使用,抽空进行了摸索,特整理此文;该ETL数据交换工具开发者已经有三、四年没有更新维护记录了,不确定该项目是否会继续维护,因此选择该工具应用于项目时,请考虑后续的技术支持与问题处理等所需要的解决方案成本; 1、介绍
ETL数据导入导出工具HData使用
2016-08-25

值得考虑的七大优秀ETL工具

目前市场上此类工具可谓林林总总。本文将为您筛选出七大顶级、八大补充ETL软件工具,在逐一介绍其特点和社区得分的基础上,最后给出各种适用的场景。
ETL工具数据2024-12-03

2021年用于数据集成的9大ETL工具

ETL工具用于将异构数据转换为同类数据,然后由数据科学家用于从数据中获得有价值的见解。

Dba+开源工具:补齐MySQL 8.0迁移短板,Binlog解析ETL抽取数据工具

将解析binlog和执行SQL语句的两个过程分别由两个线程来执行。其中,解析binlog的线程每次解析完一个事件后通过队列将SQL语句传给SQL执行线程,SQL执行线程从队列中取出SQL语句并按顺序依次执行,这样就保证了SQL语句的串行执行

ETL工具算法构建企业级数据仓库五步法

ETL是数据抽取(Extract)、转换(Transform)、加载(Load )的简写,它是将OLTP系统中的数据经过抽取,并将不同数据源的数据进行转换、整合,得出一致性的数据,然后加载到数据仓库中。简而言之ETL是完成从 OLTP系统到

ETL调度系统及常见工具对比:Azkaban、Oozie、数栖云

最近遇到了很多正在研究ETL及其工具的同学向我们抱怨:同样都在用 Kettle ,起点明明没差异,但为什么别人ETL做的那么快那么好,自己却不断掉坑? 其实,类似于像 Kettle 这样开源的工具,已经覆盖了大部分日常工作所需的功能了,直接
2023-06-05

ETL工具之kettle的使用之异构数据抽取MongoDB——>DB2

DB2" src="/upload/image/images/imgsql/4.jpg">环境简介:数据库版本:MongoDB 5.0.4  (查询语句:db.version(); ); DB2 9.7  ;     kettle版本: 9.2实现目标:将Mo
ETL工具之kettle的使用之异构数据抽取MongoDB——>DB2
2016-03-18

Python 工具——Anaconda+

十分具体详细,细致到了每一步安装过程的截图,看了此篇,你完全不用看其他教程,给出了软件的百度云以及自己找到的可用的 Pycharm 的激活方式,可以直接安好,并开始写出自己的第一个 Python 代码。如果还没有开始 Python 工具下载
2023-01-31

大数据时代,ETL工具的新标准正在削弱供应商价值!

如果你问企业“ETL工具重要吗?”我想答案一定是肯定的;如果你问企业“一定要选用商用ETL工具吗?”,这个结果就不见得那么统一了。ETL供应商足以应对不断变化的数据环境而更好得生存吗?ETL起源于数据仓库,虽然开发人员的学习曲线很高,但它提
2023-06-05

Python工具之SQLAlchemy

工具介绍:SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果。工作方式:通过定义类的方式来操
2023-01-31

Python-工具安装

Windows下Python,setuptools,pip,virtualenv的安装Windows 2003平台,安装Python2.7.4,Python3.3,setuptools,pip,virtualenv。安装Python2.7.
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录