如何使用5个Python库管理大数据?
來源 |?medium
編譯 | 武明利
責編 |?Carol
出品 | CSDN云計算(ID:CSDNcloud)
如今,Python真是無處不在。盡管許多看門人爭辯說,如果他們不使用比Python更難的語言編寫代碼,那么一個人是否真是軟件開發(fā)人員,但它仍然無處不在。
Python被用于自動化,管理網(wǎng)站,分析數(shù)據(jù)和處理大數(shù)據(jù)。隨著數(shù)據(jù)的增長,我們對其進行管理的方式越來越需要調(diào)整。我們不再局限于僅使用關(guān)系型數(shù)據(jù)庫。這也意味著現(xiàn)在有更多與這些新系統(tǒng)進行交互的工具,例如Kafka,Hadoop(具體來說是HBase),Spark,BigQuery和Redshift(僅舉幾例)。
這些系統(tǒng)中的每一個都利用如分布式、柱狀結(jié)構(gòu)和流數(shù)據(jù)之類的概念來更快地向終端用戶提供信息。對于更快、更新的信息需求將促使數(shù)據(jù)工程師和軟件工程師利用這些工具。這就是為什么我們想要提供一些Python庫的快速介紹來幫助你。
BigQuery
谷歌BigQuery是一個非常受歡迎的企業(yè)倉庫,由谷歌云平臺(GCP)和Bigtable組合而成。這個云服務(wù)可以很好地處理各種大小的數(shù)據(jù),并在幾秒鐘內(nèi)執(zhí)行復雜的查詢。
BigQuery是一個RESTful網(wǎng)絡(luò)服務(wù),它使開發(fā)人員能夠結(jié)合谷歌云平臺對大量數(shù)據(jù)集進行交互分析。可以看看下方另一個例子。
之前寫過一篇文章里有說明如何連接到BigQuery,然后開始獲取有關(guān)將與之交互的表和數(shù)據(jù)集的信息。在這種情況下,Medicare數(shù)據(jù)集是任何人都可以訪問的開源數(shù)據(jù)集。
關(guān)于BigQuery的另一點是,它是在Bigtable上運行的。重要的是要了解該倉庫不是事務(wù)型數(shù)據(jù)庫。因此,不能將其視為在線交易處理(OLTP)數(shù)據(jù)庫。它是專為大數(shù)據(jù)而設(shè)計的。所以它的工作與千萬字節(jié)(PB)級的數(shù)據(jù)集的處理保持一致。
Redshift and Sometimes S3
接下來是亞馬遜(Amazon)流行的Redshift和S3。AmazonS3本質(zhì)上是一項存儲服務(wù),用于從互聯(lián)網(wǎng)上的任何地方存儲和檢索大量數(shù)據(jù)。使用這項服務(wù),你只需為實際使用的存儲空間付費。另一方面,Redshift是一個管理完善的數(shù)據(jù)倉庫,可以有效地處理千萬字節(jié)(PB)級的數(shù)據(jù)。該服務(wù)使用SQL和BI工具可以更快地進行查詢。
Amazon Redshift和S3作為一個強大的組合來處理數(shù)據(jù):使用S3可以將大量數(shù)據(jù)上傳Redshift倉庫。用Python編程時,這個功能強大的工具對開發(fā)人員來說非常方便。
這是一個選擇使用psycopg2的基本連接的腳本。我借用了Jaychoo代碼。但是,這再次提供了有關(guān)如何連接并從Redshift獲取數(shù)據(jù)的快速指南。
PySpark
讓我們離開數(shù)據(jù)存儲系統(tǒng)的世界,來研究有助于我們快速處理數(shù)據(jù)的工具。Apache Spark是一個非常流行的開源框架,可以執(zhí)行大規(guī)模的分布式數(shù)據(jù)處理,它也可以用于機器學習。該集群計算框架主要側(cè)重于簡化分析。它與彈性分布式數(shù)據(jù)集(RDD)配合使用,并允許用戶處理Spark集群的管理資源。
它通常與其他Apache產(chǎn)品(例如HBase)結(jié)合使用。Spark將快速處理數(shù)據(jù),然后將其存儲到其他數(shù)據(jù)存儲系統(tǒng)上設(shè)置的表中。
有時候,安裝PySpark可能是個挑戰(zhàn),因為它需要依賴項。你可以看到它運行在JVM之上,因此需要Java的底層基礎(chǔ)結(jié)構(gòu)才能運行。然而,在Docker盛行的時代,使用PySpark進行實驗更加方便。
阿里巴巴使用PySpark來個性化網(wǎng)頁和投放目標廣告——正如許多其他大型數(shù)據(jù)驅(qū)動組織一樣。
?
Kafka Python
Kafka是一個分布式發(fā)布-訂閱消息傳遞系統(tǒng),它允許用戶在復制和分區(qū)主題中維護消息源。
這些主題基本上是從客戶端接收數(shù)據(jù)并將其存儲在分區(qū)中的日志。Kafka Python被設(shè)計為與Python接口集成的官方Java客戶端。它最好與新的代理商一起使用,并向后兼容所有舊版本。使用KafkaPython編程同時需要引用使用者(KafkaConsumer)和引用生產(chǎn)者(KafkaProducer)。
在Kafka Python中,這兩個方面并存。KafkaConsumer基本上是一個高級消息使用者,將用作官方Java客戶端。
它要求代理商支持群組API。KafkaProducer是一個異步消息生成器,它的操作方式也非常類似于Java客戶端。生產(chǎn)者可以跨線程使用而沒有問題,而消費者則需要多線程處理。
Pydoop
讓我們解決這個問題。Hadoop本身并不是一個數(shù)據(jù)存儲系統(tǒng)。Hadoop實際上具幾個組件,包括MapReduce和Hadoop分布式文件系統(tǒng)(HDFS)。因此,Pydoop在此列表中,但是你需要將Hadoop與其他層(例如Hive)配對,以便更輕松地處理數(shù)據(jù)。
Pydoop是Hadoop-Python界面,允許與HDFSAPI交互,并使用純Python代碼編寫MapReduce工作。
該庫允許開發(fā)人員無需了解Java即可訪問重要的MapReduce功能,例如RecordReader和Partitioner。
對于大多數(shù)數(shù)據(jù)工程師而言,Pydoop本身可能有點太基本了。你們中的大多數(shù)人很可能會在Airbow中編寫在這些系統(tǒng)之上運行的ETLs。但是,至少對你的工作有一個大致的了解還是很不錯的。
從哪里開始呢?
未來幾年,管理大數(shù)據(jù)只會變得越來越困難。由于日益劇增的網(wǎng)絡(luò)能力——物聯(lián)網(wǎng)(IoT),改進的計算等等——我們得到的數(shù)據(jù)將會如洪流般地繼續(xù)增長。
因此,如果我們想要跟上步伐,,有必要了解一些可用于與這些系統(tǒng)進行交互的數(shù)據(jù)系統(tǒng)和庫。
你有什么看法?歡迎評論區(qū)和我們討論。
推薦閱讀:10 個實用功能告訴你,谷歌云(Google Cloud)相對亞馬遜云(AWS)有哪些優(yōu)勢? 我是如何用6個月,從0編程經(jīng)驗變成數(shù)據(jù)科學家的? 愛荷華大選 App 投票釀鬧劇的反思:為什么我們在軟件工程方面如此糟糕? 愿得一心人:硅谷億萬富豪們的婚姻怎樣?有人白首相守七十年 一文告訴你,如何使用Python構(gòu)建一個“谷歌搜索”系統(tǒng) | 內(nèi)附代碼 區(qū)塊鏈的陰暗面 真香,朕在看了!猛戳“閱讀原文”,填寫中國遠程辦公-調(diào)查問卷總結(jié)
以上是生活随笔為你收集整理的如何使用5个Python库管理大数据?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Gartner:阿里云蝉联全球第三、亚太
- 下一篇: 行,Python终于跌神坛了!程序员:活