如何使用5個Python庫管理大數據?

現在,Python真是無處不在。儘管許多看門人爭辯說,若是他們不使用比Python更難的語言編寫代碼,那麼一我的是否真是軟件開發人員,但它仍然無處不在。python

Python被用於自動化,管理網站,分析數據和處理大數據。隨着數據的增加,咱們對其進行管理的方式愈來愈須要調整。咱們再也不侷限於僅使用關係型數據庫。這也意味着如今有更多與這些新系統進行交互的工具,例如Kafka,Hadoop(具體來講是HBase),Spark,BigQuery和Redshift(僅舉幾例)。數據庫

這些系統中的每個都利用如分佈式、柱狀結構和流數據之類的概念來更快地向終端用戶提供信息。對於更快、更新的信息需求將促使數據工程師和軟件工程師利用這些工具。這就是爲何咱們想要提供一些Python庫的快速介紹來幫助你。編程

BigQuery網絡

谷歌BigQuery是一個很是受歡迎的企業倉庫,由谷歌雲平臺(GCP)和Bigtable組合而成。這個雲服務能夠很好地處理各類大小的數據,並在幾秒鐘內執行復雜的查詢。多線程

BigQuery是一個RESTful網絡服務,它使開發人員可以結合谷歌雲平臺對大量數據集進行交互分析。能夠看看下方另外一個例子。框架

以前寫過一篇文章裏有說明如何鏈接到BigQuery,而後開始獲取有關將與之交互的表和數據集的信息。在這種狀況下,Medicare數據集是任何人均可以訪問的開源數據集。機器學習

關於BigQuery的另外一點是,它是在Bigtable上運行的。重要的是要了解該倉庫不是事務型數據庫。所以,不能將其視爲在線交易處理(OLTP)數據庫。它是專爲大數據而設計的。因此它的工做與千萬字節(PB)級的數據集的處理保持一致。異步

Redshift and Sometimes S3分佈式

接下來是亞馬遜(Amazon)流行的Redshift和S3。AmazonS3本質上是一項存儲服務,用於從互聯網上的任何地方存儲和檢索大量數據。使用這項服務,你只需爲實際使用的存儲空間付費。另外一方面,Redshift是一個管理完善的數據倉庫,能夠有效地處理千萬字節(PB)級的數據。該服務使用SQL和BI工具能夠更快地進行查詢。工具

Amazon Redshift和S3做爲一個強大的組合來處理數據:使用S3能夠將大量數據上傳Redshift倉庫。用Python編程時,這個功能強大的工具對開發人員來講很是方便。

這是一個選擇使用psycopg2的基本鏈接的腳本。我借用了Jaychoo代碼。可是,這再次提供了有關如何鏈接並從Redshift獲取數據的快速指南。

PySpark

讓咱們離開數據存儲系統的世界,來研究有助於咱們快速處理數據的工具。Apache Spark是一個很是流行的開源框架,能夠執行大規模的分佈式數據處理,它也能夠用於機器學習。該集羣計算框架主要側重於簡化分析。它與彈性分佈式數據集(RDD)配合使用,並容許用戶處理Spark集羣的管理資源。

它一般與其餘Apache產品(例如HBase)結合使用。Spark將快速處理數據,而後將其存儲到其餘數據存儲系統上設置的表中。

有時候,安裝PySpark多是個挑戰,由於它須要依賴項。你能夠看到它運行在JVM之上,所以須要Java的底層基礎結構才能運行。然而,在Docker盛行的時代,使用PySpark進行實驗更加方便。

阿里巴巴使用PySpark來個性化網頁和投放目標廣告——正如許多其餘大型數據驅動組織同樣。

若是你對Python感興趣,歡迎加入咱們【python學習交流】,免費領取學習資料和源碼

Kafka Python

Kafka是一個分佈式發佈-訂閱消息傳遞系統,它容許用戶在複製和分區主題中維護消息源。

這些主題基本上是從客戶端接收數據並將其存儲在分區中的日誌。Kafka Python被設計爲與Python接口集成的官方Java客戶端。它最好與新的代理商一塊兒使用,並向後兼容全部舊版本。使用KafkaPython編程同時須要引用使用者(KafkaConsumer)和引用生產者(KafkaProducer)。

在Kafka Python中,這兩個方面並存。KafkaConsumer基本上是一個高級消息使用者,將用做官方Java客戶端。

它要求代理商支持羣組API。KafkaProducer是一個異步消息生成器,它的操做方式也很是相似於Java客戶端。生產者能夠跨線程使用而沒有問題,而消費者則須要多線程處理。

Pydoop

讓咱們解決這個問題。Hadoop自己並非一個數據存儲系統。Hadoop實際上具幾個組件,包括MapReduce和Hadoop分佈式文件系統(HDFS)。所以,Pydoop在此列表中,可是你須要將Hadoop與其餘層(例如Hive)配對,以便更輕鬆地處理數據。

Pydoop是Hadoop-Python界面,容許與HDFSAPI交互,並使用純Python代碼編寫MapReduce工做。

該庫容許開發人員無需瞭解Java便可訪問重要的MapReduce功能,例如RecordReader和Partitioner。

對於大多數數據工程師而言,Pydoop自己可能有點太基本了。大家中的大多數人極可能會在Airbow中編寫在這些系統之上運行的ETLs。可是,至少對你的工做有一個大體的瞭解仍是很不錯的。

從哪裏開始呢?

將來幾年,管理大數據只會變得愈來愈困難。因爲日益劇增的網絡能力——物聯網(IoT),改進的計算等等——咱們獲得的數據將會如洪流般地繼續增加。

所以,若是咱們想要跟上步伐,,有必要了解一些可用於與這些系統進行交互的數據系統和庫。

你有什麼見解?歡迎評論區和咱們討論。

相關文章
相關標籤/搜索