欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

用于ETL的Python數(shù)據(jù)轉(zhuǎn)換工具詳解

 更新時間:2020年07月21日 09:42:15   作者:51CTO  
這篇文章主要介紹了用于ETL的Python數(shù)據(jù)轉(zhuǎn)換工具,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

ETL的考慮  

    做 數(shù)據(jù)倉庫系統(tǒng),ETL是關(guān)鍵的一環(huán)。說大了,ETL是數(shù)據(jù)整合解決方案,說小了,就是倒數(shù)據(jù)的工具?;貞浺幌鹿ぷ鬟@么些年來,處理數(shù)據(jù)遷移、轉(zhuǎn)換的工作倒 還真的不少。但是那些工作基本上是一次性工作或者很小數(shù)據(jù)量,使用access、DTS或是自己編個小程序搞定。可是在數(shù)據(jù)倉庫系統(tǒng)中,ETL上升到了一 定的理論高度,和原來小打小鬧的工具使用不同了。究竟什么不同,從名字上就可以看到,人家已經(jīng)將倒數(shù)據(jù)的過程分成3個步驟,E、T、L分別代表抽取、轉(zhuǎn)換 和裝載。

    其 實ETL過程就是數(shù)據(jù)流動的過程,從不同的數(shù)據(jù)源流向不同的目標(biāo)數(shù)據(jù)。但在數(shù)據(jù)倉庫中,ETL有幾個特點,一是數(shù)據(jù)同步,它不是一次性倒完數(shù)據(jù)就拉到,它 是經(jīng)常性的活動,按照固定周期運行的,甚至現(xiàn)在還有人提出了實時ETL的概念。二是數(shù)據(jù)量,一般都是巨大的,值得你將數(shù)據(jù)流動的過程拆分成E、T和L。
    現(xiàn) 在有很多成熟的工具提供ETL功能,例如datastage、powermart等,且不說他們的好壞。從應(yīng)用角度來說,ETL的過程其實不是非常復(fù)雜, 這些工具給數(shù)據(jù)倉庫工程帶來和很大的便利性,特別是開發(fā)的便利和維護(hù)的便利。但另一方面,開發(fā)人員容易迷失在這些工具中。舉個例子,VB是一種非常簡單的 語言并且也是非常易用的編程工具,上手特別快,但是真正VB的高手有多少?微軟設(shè)計的產(chǎn)品通常有個原則是"將使用者當(dāng)作傻瓜",在這個原則下,微軟的東西 確實非常好用,但是對于開發(fā)者,如果你自己也將自己當(dāng)作傻瓜,那就真的傻了。ETL工具也是一樣,這些工具為我們提供圖形化界面,讓我們將主要的精力放在 規(guī)則上,以期提高開發(fā)效率。從使用效果來說,確實使用這些工具能夠非??焖俚貥?gòu)建一個job來處理某個數(shù)據(jù),不過從整體來看,并不見得他的整體效率會高多 少。問題主要不是出在工具上,而是在設(shè)計、開發(fā)人員上。他們迷失在工具中,沒有去探求ETL的本質(zhì)。 

    可 以說這些工具應(yīng)用了這么長時間,在這么多項目、環(huán)境中應(yīng)用,它必然有它成功之處,它必定體現(xiàn)了ETL的本質(zhì)。如果我們不透過表面這些工具的簡單使用去看它 背后蘊涵的思想,最終我們作出來的東西也就是一個個獨立的job,將他們整合起來仍然有巨大的工作量。大家都知道“理論與實踐相結(jié)合”,如果在一個領(lǐng)域有 所超越,必須要在理論水平上達(dá)到一定的高度。

下面看下用于ETL的Python數(shù)據(jù)轉(zhuǎn)換工具,具體內(nèi)容如下所示:

前幾天,我去Reddit詢問是否應(yīng)該將Python用于ETL相關(guān)的轉(zhuǎn)換,并且壓倒性的回答是"是"。

但是,盡管我的Redditor同事熱心支持使用Python,但他們建議研究Pandas以外的庫-出于對大型數(shù)據(jù)集Pandas性能的擔(dān)憂。

經(jīng)過研究,我發(fā)現(xiàn)了很多用于數(shù)據(jù)轉(zhuǎn)換的Python庫:有些改進(jìn)了Pandas的性能,而另一些提供了自己的解決方案。

我找不到這些工具的完整列表,所以我想我可以使用所做的研究來編譯一個工具-如果我錯過了什么或弄錯了什么,請告訴我!

Pandas

網(wǎng)站:https://pandas.pydata.org/

總覽

Pandas當(dāng)然不需要介紹,但是我還是給它一個介紹。

Pandas在Python中增加了DataFrame的概念,并在數(shù)據(jù)科學(xué)界廣泛用于分析和清理數(shù)據(jù)集。 它作為ETL轉(zhuǎn)換工具非常有用,因為它使操作數(shù)據(jù)非常容易和直觀。

優(yōu)點

  • 廣泛用于數(shù)據(jù)處理
  • 簡單直觀的語法
  • 與其他Python工具(包括可視化庫)良好集成
  • 支持常見的數(shù)據(jù)格式(從SQL數(shù)據(jù)庫,CSV文件等讀取)

缺點

  • 由于它會將所有數(shù)據(jù)加載到內(nèi)存中,因此無法擴展,并且對于非常大(大于內(nèi)存)的數(shù)據(jù)集來說可能是一個錯誤的選擇

進(jìn)一步閱讀

  • 10分鐘Pandas
  • Pandas機器學(xué)習(xí)的數(shù)據(jù)處理

Dask

網(wǎng)站:https://dask.org/

總覽

根據(jù)他們的網(wǎng)站," Dask是用于Python并行計算的靈活庫。"

從本質(zhì)上講,Dask擴展了諸如Pandas之類的通用接口,供在分布式環(huán)境中使用-例如,Dask DataFrame模仿了。

優(yōu)點

  • 可擴展性— Dask可以在本地計算機上運行并擴展到集群
  • 能夠處理內(nèi)存不足的數(shù)據(jù)集
  • 即使在相同的硬件上,使用相同的功能也可以提高性能(由于并行計算)
  • 最少的代碼更改即可從Pandas切換
  • 旨在與其他Python庫集成

缺點

  • 除了并行性,還有其他方法可以提高Pandas的性能(通常更為顯著)
  • 如果您所做的計算量很小,則沒有什么好處
  • Dask DataFrame中未實現(xiàn)某些功能

進(jìn)一步閱讀

  • Dask文檔
  • 為什么每個數(shù)據(jù)科學(xué)家都應(yīng)該使用Dask

Modin

網(wǎng)站:https://github.com/modin-project/modin

總覽

Modin與Dask相似之處在于,它試圖通過使用并行性并啟用分布式DataFrames來提高Pandas的效率。 與Dask不同,Modin基于Ray(任務(wù)并行執(zhí)行框架)。

Modin優(yōu)于Dask的主要好處是Modin可以自動處理跨計算機核心分發(fā)數(shù)據(jù)(無需進(jìn)行配置)。

優(yōu)點

  • 可伸縮性— Ray比Modin提供的更多
  • 完全相同的功能(即使在相同的硬件上)也可以提高性能
  • 最小的代碼更改即可從Pandas切換(更改import語句)
  • 提供所有Pandas功能-比Dask更多的"嵌入式"解決方案

缺點

  • 除了并行性,還有其他方法可以提高Pandas的性能(通常更為顯著)
  • 如果您所做的計算量很小,則沒有什么好處

進(jìn)一步閱讀

  • Modin文檔
  • Dask和Modin有什么區(qū)別?

Petl

網(wǎng)站:https://petl.readthedocs.io/en/stable/

總覽

petl包含了pandas的許多功能,但專為ETL設(shè)計,因此缺少額外的功能,例如用于分析的功能。 petl具有用于ETL的所有三個部分的工具,但本文僅專注于數(shù)據(jù)轉(zhuǎn)換。

盡管petl提供了轉(zhuǎn)換表的功能,但其他工具(例如pandas)似乎更廣泛地用于轉(zhuǎn)換和有據(jù)可查的文檔,因此petl對此吸引力較小。

優(yōu)點

  • 最小化系統(tǒng)內(nèi)存的使用,使其能夠擴展到數(shù)百萬行
  • 對于在SQL數(shù)據(jù)庫之間進(jìn)行遷移很有用
  • 輕巧高效

缺點

  • 通過很大程度地減少對系統(tǒng)內(nèi)存的使用,petl的執(zhí)行速度會變慢-不建議在性能很重要的應(yīng)用程序中使用
  • 較少使用此列表中的其他解決方案進(jìn)行數(shù)據(jù)處理

進(jìn)一步閱讀

  1. 使用Petl快速了解數(shù)據(jù)轉(zhuǎn)換和遷移
  2. petl轉(zhuǎn)換文檔 PySpark

網(wǎng)站:http://spark.apache.org/

總覽

Spark專為處理和分析大數(shù)據(jù)而設(shè)計,并提供多種語言的API。 使用Spark的主要優(yōu)點是Spark DataFrames使用分布式內(nèi)存并利用延遲執(zhí)行,因此它們可以使用集群處理更大的數(shù)據(jù)集,而Pandas之類的工具則無法實現(xiàn)。

如果要處理的數(shù)據(jù)非常大,并且數(shù)據(jù)操作的速度和大小很大,Spark是ETL的理想選擇。

優(yōu)點

  • 可擴展性和對更大數(shù)據(jù)集的支持
  • 就語法而言,Spark DataFrames與Pandas非常相似
  • 通過Spark SQL使用SQL語法進(jìn)行查詢
  • 與其他流行的ETL工具兼容,包括Pandas(您實際上可以將Spark DataFrame轉(zhuǎn)換為Pandas DataFrame,從而使您可以使用各種其他庫)
  • 與Jupyter筆記本電腦兼容
  • 內(nèi)置對SQL,流和圖形處理的支持

缺點

  • 需要一個分布式文件系統(tǒng),例如S3
  • 使用CSV等數(shù)據(jù)格式會限制延遲執(zhí)行,需要將數(shù)據(jù)轉(zhuǎn)換為Parquet等其他格式
  • 缺少對數(shù)據(jù)可視化工具(如Matplotlib和Seaborn)的直接支持,這兩種方法都得到了Pandas的良好支持

進(jìn)一步閱讀

  • Python中的Apache Spark:新手指南
  • PySpark簡介
  • PySpark文檔(尤其是語法) 值得一提

盡管我希望這是一個完整的列表,但我不希望這篇文章過長!

確實有很多許多用于數(shù)據(jù)轉(zhuǎn)換的Python工具,因此我包括了這一部分,至少是我錯過的其他項目(我可能會在本文的第二部分中進(jìn)一步探討這些項目)。

結(jié)論

我希望這份清單至少可以幫助您了解Python必須提供哪些工具來進(jìn)行數(shù)據(jù)轉(zhuǎn)換。 在進(jìn)行了這項研究之后,我相信Python是ETL的優(yōu)秀選擇-這些工具及其開發(fā)人員使它成為了一個了不起的平臺。

到此這篇關(guān)于用于ETL的Python數(shù)據(jù)轉(zhuǎn)換工具的文章就介紹到這了,更多相關(guān)Python數(shù)據(jù)轉(zhuǎn)換工具內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Django 自定義權(quán)限管理系統(tǒng)詳解(通過中間件認(rèn)證)

    Django 自定義權(quán)限管理系統(tǒng)詳解(通過中間件認(rèn)證)

    這篇文章主要介紹了Django 自定義權(quán)限管理系統(tǒng)詳解(通過中間件認(rèn)證),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • python使用pip安裝模塊出現(xiàn)ReadTimeoutError: HTTPSConnectionPool的解決方法

    python使用pip安裝模塊出現(xiàn)ReadTimeoutError: HTTPSConnectionPool的解決方法

    這篇文章主要介紹了python使用pip安裝模塊出現(xiàn)ReadTimeoutError: HTTPSConnectionPool的解決方法,需要的朋友可以參考下
    2019-10-10
  • python模塊常用用法實例詳解

    python模塊常用用法實例詳解

    由于平時習(xí)慣,strftime比較常用,strptime和它是反操作。這篇文章主要介紹了python模塊常用用法,需要的朋友可以參考下
    2019-10-10
  • Python中類創(chuàng)建和實例化的過程詳解

    Python中類創(chuàng)建和實例化的過程詳解

    這篇文章主要介紹了Python中類創(chuàng)建和實例化過程,文中通過代碼示例講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-06-06
  • 關(guān)于numpy中eye和identity的區(qū)別詳解

    關(guān)于numpy中eye和identity的區(qū)別詳解

    今天小編就為大家分享一篇關(guān)于numpy中eye和identity的區(qū)別詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • python中列表添加元素的幾種方式(+、append()、extend())

    python中列表添加元素的幾種方式(+、append()、extend())

    本文主要介紹了python中列表添加元素的幾種方式(+、append()、extend()),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • 一起來學(xué)習(xí)Python的列表

    一起來學(xué)習(xí)Python的列表

    這篇文章主要為大家詳細(xì)介紹了Python的列表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Python的這些庫,你知道多少?

    Python的這些庫,你知道多少?

    最近整理了一些好用的庫但是只是初級介紹,如果大家用得到的話還請自己到官網(wǎng)上查一下,因為東西太多我一 一介紹的話可能不太現(xiàn)實,需要的朋友可以參考下
    2021-06-06
  • python子線程如何有序執(zhí)行

    python子線程如何有序執(zhí)行

    最近在寫一個項目,需要用到子線程,那么python子線程如何有序執(zhí)行,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • Python自動發(fā)送和收取郵件的方法

    Python自動發(fā)送和收取郵件的方法

    這篇文章主要介紹了Python自動發(fā)送和收取郵件的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08

最新評論