ETL的考虑

做 数据仓库系统,ETL是关键的一环。说大了,ETL是数据整合解决方案,说小了,就是倒数据的工具。回忆一下工作这么些年来,处理数据迁移、转换的工作倒 还真的不少。但是那些工作基本上是一次性工作或者很小数据量,使用access、DTS或是自己编个小程序搞定。可是在数据仓库系统中,ETL上升到了一 定的理论高度,和原来小打小闹的工具使用不同了。究竟什么不同,从名字上就可以看到,人家已经将倒数据的过程分成3个步骤,E、T、L分别代表抽取、转换 和装载。

其 实ETL过程就是数据流动的过程,从不同的数据源流向不同的目标数据。但在数据仓库中,ETL有几个特点,一是数据同步,它不是一次性倒完数据就拉到,它 是经常性的活动,按照固定周期运行的,甚至现在还有人提出了实时ETL的概念。二是数据量,一般都是巨大的,值得你将数据流动的过程拆分成E、T和L。

现 在有很多成熟的工具提供ETL功能,例如datastage、powermart等,且不说他们的好坏。从应用角度来说,ETL的过程其实不是非常复杂, 这些工具给数据仓库工程带来和很大的便利性,特别是开发的便利和维护的便利。但另一方面,开发人员容易迷失在这些工具中。举个例子,VB是一种非常简单的 语言并且也是非常易用的编程工具,上手特别快,但是真正VB的高手有多少?微软设计的产品通常有个原则是"将使用者当作傻瓜",在这个原则下,微软的东西 确实非常好用,但是对于开发者,如果你自己也将自己当作傻瓜,那就真的傻了。ETL工具也是一样,这些工具为我们提供图形化界面,让我们将主要的精力放在 规则上,以期提高开发效率。从使用效果来说,确实使用这些工具能够非常快速地构建一个job来处理某个数据,不过从整体来看,并不见得他的整体效率会高多 少。问题主要不是出在工具上,而是在设计、开发人员上。他们迷失在工具中,没有去探求ETL的本质。

可 以说这些工具应用了这么长时间,在这么多项目、环境中应用,它必然有它成功之处,它必定体现了ETL的本质。如果我们不透过表面这些工具的简单使用去看它 背后蕴涵的思想,最终我们作出来的东西也就是一个个独立的job,将他们整合起来仍然有巨大的工作量。大家都知道“理论与实践相结合”,如果在一个领域有 所超越,必须要在理论水平上达到一定的高度。

下面看下用于ETL的Python数据转换工具,具体内容如下所示:

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

但是,尽管我的Redditor同事热心支持使用Python,但他们建议研究Pandas以外的库-出于对大型数据集Pandas性能的担忧。

经过研究,我发现了很多用于数据转换的Python库:有些改进了Pandas的性能,而另一些提供了自己的解决方案。

我找不到这些工具的完整列表,所以我想我可以使用所做的研究来编译一个工具-如果我错过了什么或弄错了什么,请告诉我!

Pandas

网站:https://pandas.pydata.org/

总览

Pandas当然不需要介绍,但是我还是给它一个介绍。

Pandas在Python中增加了DataFrame的概念,并在数据科学界广泛用于分析和清理数据集。 它作为ETL转换工具非常有用,因为它使操作数据非常容易和直观。

优点

广泛用于数据处理

简单直观的语法

与其他Python工具(包括可视化库)良好集成

支持常见的数据格式(从SQL数据库,CSV文件等读取)

缺点

由于它会将所有数据加载到内存中,因此无法扩展,并且对于非常大(大于内存)的数据集来说可能是一个错误的选择

进一步阅读

10分钟Pandas

Pandas机器学习的数据处理

Dask

网站:https://dask.org/

总览

根据他们的网站," Dask是用于Python并行计算的灵活库。"

从本质上讲,Dask扩展了诸如Pandas之类的通用接口,供在分布式环境中使用-例如,Dask DataFrame模仿了。

优点

可扩展性— Dask可以在本地计算机上运行并扩展到集群

能够处理内存不足的数据集

即使在相同的硬件上,使用相同的功能也可以提高性能(由于并行计算)

最少的代码更改即可从Pandas切换

旨在与其他Python库集成

缺点

除了并行性,还有其他方法可以提高Pandas的性能(通常更为显着)

如果您所做的计算量很小,则没有什么好处

Dask DataFrame中未实现某些功能

进一步阅读

Dask文档

为什么每个数据科学家都应该使用Dask

Modin

网站:https://github.com/modin-project/modin

总览

Modin与Dask相似之处在于,它试图通过使用并行性并启用分布式DataFrames来提高Pandas的效率。 与Dask不同,Modin基于Ray(任务并行执行框架)。

Modin优于Dask的主要好处是Modin可以自动处理跨计算机核心分发数据(无需进行配置)。

优点

可伸缩性— Ray比Modin提供的更多

完全相同的功能(即使在相同的硬件上)也可以提高性能

最小的代码更改即可从Pandas切换(更改import语句)

提供所有Pandas功能-比Dask更多的"嵌入式"解决方案

缺点

除了并行性,还有其他方法可以提高Pandas的性能(通常更为显着)

如果您所做的计算量很小,则没有什么好处

进一步阅读

Modin文档

Dask和Modin有什么区别?

Petl

网站:https://petl.readthedocs.io/en/stable/

总览

petl包含了pandas的许多功能,但专为ETL设计,因此缺少额外的功能,例如用于分析的功能。 petl具有用于ETL的所有三个部分的工具,但本文仅专注于数据转换。

尽管petl提供了转换表的功能,但其他工具(例如pandas)似乎更广泛地用于转换和有据可查的文档,因此petl对此吸引力较小。

优点

最小化系统内存的使用,使其能够扩展到数百万行

对于在SQL数据库之间进行迁移很有用

轻巧高效

缺点

通过很大程度地减少对系统内存的使用,petl的执行速度会变慢-不建议在性能很重要的应用程序中使用

较少使用此列表中的其他解决方案进行数据处理

进一步阅读

使用Petl快速了解数据转换和迁移

petl转换文档 PySpark

网站:http://spark.apache.org/

总览

Spark专为处理和分析大数据而设计,并提供多种语言的API。 使用Spark的主要优点是Spark DataFrames使用分布式内存并利用延迟执行,因此它们可以使用集群处理更大的数据集,而Pandas之类的工具则无法实现。

如果要处理的数据非常大,并且数据操作的速度和大小很大,Spark是ETL的理想选择。

优点

可扩展性和对更大数据集的支持

就语法而言,Spark DataFrames与Pandas非常相似

通过Spark SQL使用SQL语法进行查询

与其他流行的ETL工具兼容,包括Pandas(您实际上可以将Spark DataFrame转换为Pandas DataFrame,从而使您可以使用各种其他库)

与Jupyter笔记本电脑兼容

内置对SQL,流和图形处理的支持

缺点

需要一个分布式文件系统,例如S3

使用CSV等数据格式会限制延迟执行,需要将数据转换为Parquet等其他格式

缺少对数据可视化工具(如Matplotlib和Seaborn)的直接支持,这两种方法都得到了Pandas的良好支持

进一步阅读

Python中的Apache Spark:新手指南

PySpark简介

PySpark文档(尤其是语法) 值得一提

尽管我希望这是一个完整的列表,但我不希望这篇文章过长!

确实有很多许多用于数据转换的Python工具,因此我包括了这一部分,至少是我错过的其他项目(我可能会在本文的第二部分中进一步探讨这些项目)。

pygrametl http://chrthomsen.github.io/pygrametl/

Apache Beam https://beam.apache.org/

结论

我希望这份清单至少可以帮助您了解Python必须提供哪些工具来进行数据转换。 在进行了这项研究之后,我相信Python是ETL的优秀选择-这些工具及其开发人员使它成为了一个了不起的平台。

到此这篇关于用于ETL的Python数据转换工具的文章就介绍到这了,更多相关Python数据转换工具内容请搜索python博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持python博客!

python etl 大猩猩_用于ETL的Python数据转换工具详解相关推荐

  1. python数值转换机_用于ETL的Python数据转换工具详解

    ETL的考虑 做 数据仓库系统,ETL是关键的一环.说大了,ETL是数据整合解决方案,说小了,就是倒数据的工具.回忆一下工作这么些年来,处理数据迁移.转换的工作倒 还真的不少.但是那些工作基本上是一次 ...

  2. python矩阵运算程序_用于矩阵运算的Python程序

    python矩阵运算程序 There are following matrix operations, that we can implement with the numpy matrix. 我们可 ...

  3. Python基本语法_集合set/frozenset_内建方法详解

    目录 目录 前言 软件环境 可变集合Set set函数创建集合 创建空集合 集合元素的唯一性 集合推导式 set类型对象的内置方法 add增加一个元素 remove删除一个元素 pop随机删除并返回一 ...

  4. python 拓扑排序_拓扑排序(topsort)算法详解

    在图论中,由某个集合上的偏序得到全序的策略就是拓补排序算法.拓扑排序常出现在涉及偏序关系的问题中,例如时序的先后.事物的依赖等.针对这些问题拓扑排序通常能有效地给出可行解. 为了便于理解,我们先来看一 ...

  5. python爬财务数据_同花顺财经-财务数据爬取思路详解-python爬虫

    同样的开头,近日,群友在讨论问题的时候发来一链接,询问如何抓取个股页面上财务指标,好奇心旺盛的博主立马打开网页研究了一番. 网址如下:http://stockpage.10jqka.com.cn/60 ...

  6. python编程基础_月隐学python第2课

    python编程基础_月隐学python第2课 学习目标 掌握变量的输入和输出 掌握数据类型的基本概念 掌握算数运算 1.变量的输入和输出 1.1 变量输入 使用input输入 input用于输入数据 ...

  7. python统计csv行数_对Python 多线程统计所有csv文件的行数方法详解

    如下所示: #统计某文件夹下的所有csv文件的行数(多线程) import threading import csv import os class MyThreadLine(threading.Th ...

  8. python2.7除法_对python中的float除法和整除法的实例详解

    从python2.2开始,便有两种除法运算符:"/"."//".两者最大区别在: python2.2前的版本和python2.2以后3.0以前的版本的默认情况下 ...

  9. python符号格式化设置区间_Python 数值区间处理_对interval 库的快速入门详解

    使用 Python 进行数据处理的时候,常常会遇到判断一个数是否在一个区间内的操作.我们可以使用 if else 进行判断,但是,既然使用了 Python,那我们当然是想找一下有没有现成的轮子可以用. ...

最新文章

  1. bzoj1588[HNOI2002]营业额统计——双向链表
  2. Dreamweaver xerces panic error 错误提示。
  3. 转载:sqlmap的应用实战
  4. 怎么设置tomcat管理员的用户名和密码
  5. user-select属性用法
  6. java 8是指什么_java中8个基本数据类型到底是指什么?是什么意思,有什么作用?我需要权威的回答,...
  7. 解决pycharm运行Flask指定ip、端口更改无效
  8. java图像风格迁移_多说迁移,Java开发模仿自主实现评论(一)
  9. JS基础9-BOM常用对象(window和history)
  10. 网站改造HTTPS有哪些好处?看很多网站都做了!
  11. 大学学计算机考试大一,大学计算机基础大一考试必备题库[1].pdf
  12. Three.js地球开发—1.经纬度转球面坐标
  13. 真•扑克牌洗牌算法实现
  14. 艾盟赢销浅谈:CRM的本质和它的未来十年
  15. 【HCIE备考】笔试题库P1-10
  16. jzoj 3457. 【NOIP2013模拟联考3】沙耶的玩偶(doll) (Standard IO)
  17. cad墙线打断lisp_两个打断程序 - AutoLISP/Visual LISP 编程技术 - CAD论坛 - 明经CAD社区 - 程序 - Powered by Discuz!...
  18. pythonSSL证书错误
  19. Packet(信息包)
  20. win10无法设置移动热点的一种解决办法

热门文章

  1. 网络了解编程五层协议
  2. 鉴源论坛 ·观擎丨民机机载软件的开发与验证
  3. 空间数据可视化神器,Pydeck
  4. 当年称阿里无底线的王兴,做了一件真正没有底线的事情
  5. 实施完ERP为何还要再上MES?(内附标杆案例解析)
  6. python pexpect timeout_Pexpect 模块使用说明
  7. smarty中使用php函数,在smarty模板中使用PHP函数的方法
  8. Oracle模糊查询的几种方法【推荐最后一种】
  9. 雨流计数法python程序_rain flow 雨流计数法
  10. Failed to load resource: the server responded with a status of 406 (Not Acceptable)