Python PySpark 大数据时代
????????大數據的基本任務有數據的存儲、計算、查詢分析和挖掘,這些任務往往需要多臺計算機共同調度才能完成。大數據時代,數據變成一種生成資料,其價值也提升到了新的高度。隨著各行各業的數據化,使得數據逐步形成數據資產,利用大數據技術可以更好地讓數據資產價值化。當前越來越多的企業管理決策都轉變成以數據為驅動的大數據輔助決策。
主要介紹的知識點有:
- 大數據概述:介紹大數據相關的概念和特征
- 大數據分析工具:介紹當前大數據生態系統下的常見分析工具
Part1 什么是大數據
大數據(Big Data),是一個IT行業術語,是指無法在一定時間范圍內用單機軟件工具進行捕捉、管理和處理的數據集合,它需要使用分布式模式才能處理,其數據具有數量大、來源廣、價值密度低等特征。
至于什么數據量算得上大數據,這個也沒有一定的標準,一般來說,單機難以處理的數據量,就可以稱得上大數據。
大數據時代,分布式的數據存儲和查詢模式可以對全量數據進行處理。舉例:以前DNA和指紋數據庫的建立,由于信息技術水平的限制,只能重點采集并存儲部分人口的DNA和指紋數據,這種限制對于很多案件的偵破是非常不利的。
進入大數據時代后,從理論上來講,采集并存儲全球人口的DNA和指紋信息是可行的。因此,建立全量的DNA和指紋數據庫,這對DNA和指紋數據的對比工作來說,具有非常大的價值。
以前我們的研究問題,主要研究幾個要素之間的因果關系,而在大數據時代,更多的是對幾個要素之間相關性進行分析。基于大數據的推薦系統,可能比你自己都要了解你自己。這也是在大數據時代人類越來越關心個人隱私信息的安全問題的原因。
相關性分析是尋找因果關系的利器。可以說相關分析和因果分析是相互促進的。如果多個因素之間有明顯的相關性,那么就可以進一步研究其因果關系。
大數據的價值就在于從海量數據中,通過機器學習算法自動搜索多個因素之間的相關性,這些相關性可以大大減少人工搜尋的時間。人工從海量數據中往往很難發現多個因素之間的相關性,而這恰恰是機器學習比較擅長的領域。
Part 1.1 大數據的特點
Part 1.1.1 Volume(大量)
大數據場景下,對數據的采集、計算和存儲所設計的數量是非常龐大的,數據量往往多到單臺計算機無法處理和存儲,必須借助多臺計算機構建的集群來分布式處理和存儲。
分布式存儲要保證數據存儲的安全性。如果某一個節點上的數據損壞,那么必須從其他節點上對損壞節點上的數據進行自動修復,這個過程中就需要數據的副本,同一份數據會復制多份,并分布式存儲到不同的節點上。
如果不借助大數據工具,自己實現一個分布式文件系統,那么其工作量非常大。因此對于大數據的處理和存儲來說,更好的方案就是選擇一款開源的分布式文件系統。
Part 1.1.2 Velocity(高速)
大數據系統可以借助分布式集群構建的強大計算力,對海量數據進行快速處理。若處理數據的響應時間能到秒級,甚至毫秒級,那么其價值將非常大。實時大數據的處理,也是目前眾多大數據工具追求的一個重要能力。
Part 1.1.3 Variety(多樣)
數據的載體多種多樣,一般來說,可以分為結構化數據、非結構化數據和半結構化數據。其中很多業務數據都屬于結構化數據,而視頻、音頻和圖像等都可劃分為非結構化數據。在大數據時代下,非結構化數據從數量上來說占了大部分。因此,對視頻、音頻、圖像和自然語言等非結構化數據的處理,也是當前大數據工具要攻克的重點。
Part 1.1.4 Value(低價值密度)
大數據首先是數據量龐大,一般來說,都是PB級別的。但是在特定場景下,真正有用的數據可能較少,即數據價值密度相對較低。但是存儲過程這些數據非常重要,其中部分數據對于特定場景會起到至關重要的作用。
Part 1.1.5 Veracity(真實性)
大數據場景下,由于數據來源的多樣性,互相可以驗證,因此數據的真實性往往比較高。這里說的真實性,是指數據的準確性和及時性。數據的真實性也是大數據可以形成數據資產的一個重要前提,只有真實、可信的數據才能挖掘出有用的價值。
大數據由于具有如上的特點,這就對大數據信息化軟件提出了非常高的要求。一般的軟件系統是無法很好的處理大數據的。從技術上看,大數據與云計算密不可分。大數據無法用單臺計算機進行存儲和處理,而必須采用分布式架構,即必須依托云計算提供的分布式存儲和計算能力。
Part 1.2 大數據的發展趨勢
Part 1.2.1 大數據是一種生產資料
目前人類已經步入數字經濟時代,大數據是非常重要的一種生產資料,與土地、石油等資源作為重要的生產資料類似,數字經濟時代以大數據作為最基礎也是最重要的生產資料。
在大數據時代,信息的載體是數據。對于數據的分析與挖掘來說,其實質是生產各類信息產品,這些信息產品可以看作是一種數字商品,是可以產生實際價值的資產。若將大數據比作土地,那么基于大數據分析和挖掘出的信息產品,就好比在土地上種植出來的各種農產品。
Part 1.2.2 與物聯網和5G的融合
大數據的基礎是數據,而產生數據的源頭更多是來自物聯網和5G。物聯網、移動互聯網和5G等新興技術,將進一步助力大數據的發展,讓大數據為企業管理決策和政府決策提供更多的價值。特別是5G技術的推廣,將進一步提升大數據的應用。
Part 1.2.3 大數據理論的突破
隨著5G的發展,大數據很可能爆發新一輪的技術革命。人類處理信息往往借助視頻、圖像和聲音(語言),因此大數據技術目前正在與機器學習、人工智能等相關技術進行深度結合,在視頻、圖像和語音的處理上,必須在理論上繼續突破,才可能實現科學技術上的突破。視頻中的行為檢測、圖像物體識別和語音識別等應用會產生極大的經濟效益和社會效益。
Part 1.2.4 數據公開和標準化
數據作為一種重要的資產,只有流動起來才能更好地發揮價值。數據在流轉的過程中,數據的標準化非常重要,這樣才能打破信息孤島,從而更多地讓數據產生價值。
Part 1.2.5 數據安全
大數據中涉及各類數據,其中難免有敏感的數據,數據在流轉過程中,如何對敏感數據進行加密和脫敏,這將至關重要。因此,大數據應用必須充分考慮數據安全的問題。
Part 2 大數據下的分析工具
大數據技術首先需要解決的問題是如何高效、安全地存儲:其次是如何高效、及時地處理海量的數據,并返回有價值的信息;最后是如何通過機器學習算法,從海量數據中挖掘出潛在的價值,并構建模型,以用于預測預警。
當今大數據的基石,來源于谷歌公司的三篇論文,這三篇論文主要闡述了谷歌公司對于大數據問題的解決方案。這三篇論文分別是:
- Google File System
- Google MapReduce
- Google BigTable
其中,Google File System主要解決大數據分布式存儲的問題,Google MapReduce 主要解決大數據分布式計算的問題,Google Bigtable主要解決大數據分布式查詢的問題。
值得注意的是,當前每個大數據工具都專注于解決大數據領域的特定問題,很少有一種大數據工具可以一站式解決所有的大數據問題。因此,一般來說,大數據應用需要多種大數據工具相互配合,才能解決大數據相關的業務問題。
大數據工具非常多,常用的只有10多種,這些大數據工具重點解決的大數據領域各不相同:
- 分布式存儲:主要包含Hadoop HDFS和Kafka等。
- 分布式計算:包括批處理和流計算,主要包含Hadoop MapReduce、Spark和Flink等。
- 分布式查詢:主要包括Hive、HBase、Kylin、Impala等。
- 分布式挖掘:主要包括Spark ML和Alink等。
據中國信通院企業采購大數據軟件調研報告來看,86.6%的企業選擇基于開源軟件構建自己的大數據處理業務,下面重點介紹大數據常用的幾種分析工具。
Part 2.1 Hadoop
Hadoop是一個由Apache基金會開發的分布式系統基礎架構,源于論文Google File System。Hadoop工具可以讓用戶在不了解分布式底層細節的情況下,開發分布式程序,從而大大降低數據程序的開發難度。它可以充分利用計算機集群構建的大容量、高計算能力來對大數據進行存儲和計算。
在大數據剛興起之時,Hadoop可能是最早的大數據工具,它也是早期大數據技術的代名詞。時至今日,雖然大數據工具種類繁多,但是不少工具的底層分布式文件系統還是基于Hadoop的HDFS(Hadoop Distributed File System)。
Hadoop框架前期最核心的組件有兩個,即HDFS和MapReduce。后期又加入了YARN組件,用于資源調度。其中HDFS為海量的數據提供了存儲,而MapReduce則為海量的數據提供了分布式計算能力。
HDFS有高容錯性的特點,且支持在低廉的硬件上進行部署,而且Hadoop訪問數據的時候,具有很高的吞吐量,適合那些有著超大數據集的應用程序。
可以說,Hadoop工具是專為離線和大規模數據分析而設計的,但它并不適合對幾個記錄隨機讀寫的在線事務處理模式。Hadoop軟件是免費開源的,官網地址為http://hadoop.apache.org.
注意:目前來說,Hadoop工具不支持數據的部分update操作,因此不能像關系型數據庫那樣,可以用SQL來更新部分數據。
Part 2.2 Hive
對于數據的查詢和操作,一般開發人員熟悉的是SQL語句,但是Hadoop不支持SQL對數據的操作,而是需要用API來進行操作,這個對于很多開發人員來說并不友好。因此,很多開發人員期盼能用SQL語句來查詢Hadoop種的分布式數據。
Hive工具基于Hadoop組件,可以看作是一個數據倉庫分析系統,Hive提供了豐富的SQL查詢方式來分析存儲在Hadoop分布式文件系統中的數據。
Hive可以將結構化的數據文件映射為一張數據表,這樣就可以利用SQL來查詢數據。本質上,Hive是一個翻譯器,可以將SQL語句翻譯為MapReduce任務運行。
Hive SQL使不熟悉MapReduce的開發人員可以很方便地利用SQL語言進行數據的查詢、匯總和統計分析。但是Hive SQL與關系型數據庫的SQL略有不同,雖然它能支持絕大多數的語句,如DDL、DML以及常見的聚合函數、連接查詢和條件查詢等。
Hive還支持UDF(User-Defined Function,用戶定義函數),也可以實現對map和reduce函數的定制,為數據操作提供了良好的伸縮性和可擴展性。Hive不適用于聯機事務處理,也不適合實時查詢功能。它最適應應用在基于大量不可變數據的批處理作業。Hive的特點包括:可伸縮、可擴展、容錯、輸入格式的松散耦合。Hive最佳使用場合是大數據集的批處理作業,例如網絡日志分析。官網網址為http://hive.apache.org。
注意:目前來說,Hive種的SQL支持度有限,只支持部分常用的SQL語句,且不適合update操作去更新部分數據,即不適合基于行級的數據更新操作。
Part 2.3 HBase
HBase工具是一個分布式的、面向列的開源數據庫,該技術來源于Google BigTable的論文。它在Hadoop之上提供了類似于Google BigTable的能力。HBase不同于一般的關系數據庫,它是一個適合存儲非結構化數據的數據庫,且采用了基于列而不是基于行的數據存儲模式。
HBase在很多大型互聯網公司得到應用,HBase適用場景有:
- 密集型寫應用:寫入量巨大,而相對讀數據量較小的應用,比如消息系統的歷史消息,游戲的日志等。
- 查詢邏輯簡單的應用:HBase只支持基于rowkey的查詢,而像SQL種的join等查詢語句,它并不支持。
- 對性能和可靠性要求非常高的應用:由于HBase本身沒有單點故障,可用性非常高。它支持在線擴展節點,即使應用系統的數據在一段時間內呈井噴式增長,也可以通過橫向擴展來滿足功能要求。
HBase讀取速度快得益于內部使用了LSM樹型結構,而不是B或B+樹。一般來說,磁盤的順序讀取速度很快,但相對而言,尋找磁道的速度就要慢很多。HBase的存儲結構決定了讀取任意數量的記錄不會引發額外的尋道開銷。官網地址為http://hbase.apache.org。
注意:目前來說,HBase不能基于SQL來查詢數據,需要使用API。
Part 2.4 Apache Phoenix
Hive是構建在Hadoop之上,可以用SQL對Hadoop中的數據進行查詢和統計分析。同樣地,HBase原生也不支持用SQL進行數據查詢,因此使用起來不方便,比較費力。
Apache Phoenix是構建在HBase數據庫之上的一個SQL翻譯層。它本身用Java語言開發,可作用HBase內嵌的JDBC驅動。Apache Phoenix引擎會將SQL語句翻譯為一個或多個HBase掃描任務,并編排執行以生產標準的JDBC結果集。
Apache Phoenix提供了用SQL對HBase數據庫進行查詢操作的能力,并支持標準SQL中大部分特性,其中包括條件運算、分組、分頁等語法,因此降低了開發人員操作HBase當中的數據的難度,提高了開發效率。官網地址為http://phoenix.apache.org。
Part 2.5 Apache Drill
Apache Drill是一個開源的、低延遲的分布式海量數據查詢引擎,使用ANSI SQL兼容語法,支持本地文件、HDFS、HBase、MongoDB等后端存儲,支持Parquet、JSON和CSV等數據格式。本質上Apache Drill是一個分布式的大規模并行處理查詢層。
它是Google Dremel工具的開源實現,而Dremel是Google的交互式數據分析系統,性能非常強悍,可以處理PB級別的數據。
Google開發的Dremel工具,在處理PB級數據時,可將處理時間縮短到秒級,從而作為MapReduce的有利補充。它作為Google BigQuery的報表引擎,獲得了很大的成功。Apache Drill的官網地址為https://drill.apache.org。
Part 2.6 Apache Hudi
Apache Hudi代表Hadoop Upserts and Incrementals,由Uber開發并開源。它基于HDFS數據存儲系統之上,提供了兩種流原語:插入更新和增量拉取。它可以很好地彌補Hadoop和Hive對部分數據更新的不足。
Apache Hudi工具提供兩個核心功能:首先支持行級別的數據更新,這樣可以迅速地更新歷史數據;其次是僅對增量數據的查詢。Apache Hudi提供了對Hive、Presto和Spark的支持,可以直接使用這些組件對Hudi管理的數據進行查詢。
Hudi的主要目的是高效減少數據攝取過程中的延遲。HDFS上的分析數據集通過兩種類型的表提供服務:
- 讀優化表(Read Optimized Table):通過列式存儲提高查詢性能。
- 近實時表(Near-Real-Time Table):基于行的存儲和列式存儲的組合提供近實時查詢。
Hudi的官網地址為https://hudi.apache.org。
Part 2.7 Apache Kylin
Apache Kylin是數據平臺上的一個開源OLAP引擎。它采用多維立方體預計算技術,可以將某些場景下的大數據SQL查詢速度提升到亞秒級別。值得一提的是,Apache Kylin是國人主導的第一個Apache頂級開源項目,在開源項目有較大的影響力。
它的查詢速度如此之快,是基于預先計算盡量多的聚合結果,在查詢時應該盡量利用預先計算的結果得出查詢結果,從而避免直接掃描超大的原始記錄。
使用Apache Kylin主要分為三步:
Apache Kylin的官網地址為http://kylin.apache.org。
Part 2.8 Apache Presto
Apache Presto 是一個開源的分布式SQL查詢引擎,適用于交互式分析查詢,數據量支持GB到PB字節。它的設計和編寫完全是為了解決像Facebook這樣規模的商業數據倉庫的交互式分析和處理速度的問題。
Presto支持多種數據存儲系統,包括Hive、Cassandra和各類關系數據庫。Presto查詢可以將多個數據源的數據進行合并,可以跨越整個組織進行分析。
國內的京東和國外的Facebook都使用Presto進行交互式查詢。Apache Presto的官網地址為 https://prestodb.io。
Part 2.9 ClickHouse
Yandex在2016年6月15日開源了一個用于數據分析的數據庫,名字叫作ClickHouse,這個列式存儲數據庫的性能要超過很多流行的商業MPP數據庫軟件,例如Vertica。
Clickhouse的具體特點如下:
- 面向列的DBMS
- 數據高效壓縮
- 磁盤存儲的數據
- 多核并行處理
- 在多個服務器上分布式處理
- SQL語法支持
- 向量化引擎
- 實時數據更新
- 索引支持
- 適合在線查詢
- 支持近似預估計算
- 支持嵌套的數據結構
- 數據復制和對數據完整性的支持。
ClickHouse的官網地址為https://clickhouse.tech。
Part 2.10 Apache Spark
Apache Spark是專為大規模數據處理而設計的快速通用的計算引擎。開源的通用并行框架。它不同于Hadoop MapReduce,計算任務中間輸出結果可以保存在內存中,而不再需要讀寫HDFS,因此Spark計算速度更快,也能更好地適用于機器學習等需要迭代的算法。
Apache Spark是由Scala語法開發的,可以與Java程序一起使用。它能夠像操作本地集合對象一樣輕松地操作分布式數據集。它具有運行速度快、易用性好、通用性強和隨處運行等特點。
Apache Spark提供了Java、Scala、Python以及R語言的API。還支持更高級的工具,如Spark SQL、Spark Streaming、Spark MLlib和Spark GraphX等。
Apache Spark主要有如下幾個特點:
- 非常快的計算速度:它主要在內存中計算,因此在需要反復迭代的算法上,優勢非常明顯,比Hadoop快100倍。
- 易用性:他大概提供了80多個高級運算符,包括各種磚和、聚合等操作。這相對于Hadoop組件中提供的map和reduce兩大類操作來說,豐富了很多,因此可以更好地適應復雜數據的邏輯處理。
- 通用性:它除了自身不帶數據存儲外,其他大數據常見的業務需求,比如批處理、流處理、圖計算和機器學習等都有對應的組件。因此,開發者通過Spark提供的各類組件,如Spark SQL、Spark Streaming、Spark MLlib和Spark GraphX等,可以在同一個應用程序中無縫組合使用這些庫。
- 支持多種資源管理器:它支持Hadoop YARN、Apache Mesos,以及Spark自帶的Standalone集群管理器。
Spark的官網地址為http://sparkapache.org。
Part 2.11 Apache Flink
Apache Flink是一個計算框架和分布式處理引擎,用于對無界和有界數據流進行有狀態計算,該框架完全由Java語言開發,也是國內阿里巴巴主推的一款大數據工具。其針對數據流的分布式計算提供了數據分布、數據通信以及容錯機制等功能。基于流執行引擎,Flink提供了諸多更高抽象層的API,以便用戶編寫分布式任務。
- DataSet API:對靜態數據進行批處理操作,將靜態數據抽象成分布式的數據集,用戶可以方便地使用Flink提供的各種操作符,對分布式數據集進行處理。
- DataStream API:對數據流進行流處理操作,將流式的數據抽象成分布式的數據流,用戶可以方便地對分布式數據流進行各類操作。
- Table API:對結構化數據進行查詢操作,將結構化數據抽象成關系表,并通過類SQL的語句對關系表進行各種查詢操作。
Apache Flink的官網地址為http://flink.apache.org。
Part 2.12 Apache Storm
Apache Storm是開源的分布式實時計算系統,擅長處理海量數據,適用于數據實時處理而非批處理。Hadoop或者Hive是大數據中進行批處理使用較為廣泛的工具,這也是Hadoop或者Hive的強項。但是Hadoop MapReduce并不擅長實時計算,這是Hadoop或者Hive的強項。但是Hadoop MapReduce并不擅長實時計算,這也是業界一致的共識。
當前很多業務對于實時計算的需求越來越強烈,這也是Storm推出的一個重要原因。Apache Storm的官網地址為 http://storm.apache.org。
注意:隨著Spark和Flink對于流數據的處理能力增強,目前不少實時大數據處理分析都從Storm遷移到Spark和Flink上,從而降低了維護成本。
Part 2.13 Apache Druid
Apache Druid是一個分布式的、支持實時多為OLAP分析的數據處理系統。它即支持高速的數據實時攝入處理,也支持實時且靈活的多維數據分析查詢。因此他最常用的大數據場景就是靈活快速的多維OLAP分析。
另外,它支持根據時間戳對數據進行預聚合攝入和聚合分析,因此也經常用于對時序數據進行處理分析。
Apache Druid的主要特性如下:
- 亞秒響應的交互式查詢,支持較高并發。
- 支持是是導入,導入即可被查詢,支持高并發導入。
- 采用分布式shared-nothing的架構,可以擴展到PB級。
- 數據查詢支持SQL。
Apache Druid的官網地址為http://druid.apache.org。
注意:目前Apache Druid不支持精確去重,不支持Join和根據主鍵進行單條記錄更新。同時,需要與阿里開源的Druid數據庫連接池區別開來。
Part 2.14 Apache Kafka
Apache Kafka是一個開源流處理平臺,它的目標是為處理實時數據提供一個統一、高通量、低等待的平臺。Apache Kafka最初由LinkedIn開發,并于2011年初開源。2012年10月從Apache Incubator畢業。在非常多的實時大數據項目中,都能見到Apache Kafka的身影。
Apache Kafka不僅僅是一個消息系統,主要用于如下場景:
- 發布和訂閱:類似一個消息系統,可以讀寫流式數據。
- 流數據處理:編寫可擴展的流處理應用程序,可用于實時事件響應的場景。
- 數據存儲:安全地將流式的數據存儲在一個分布式、有副本備份且容錯的集群。
它的一個重要特點是可以作為連接各個子系統的數據管道,從而構建實時的數據管道和流式應用。它支持水平擴展,且具有高可用、速度快的優點,已經運行在成千上萬家公司的生產環境中。Apache Kafka的官網地址為http://kafka.apache.org。
注意:某種程度上來說,很多實時大數據系統已經離不開Kafka,他充當一個內存數據庫,可以快速地讀寫流數據。
Part 2.15 TensorFlow
TensorFlow最初由谷歌公司開發,用于機器學習和深度神經網絡方面的研究,它是一個端到端開源機器學習平臺。它擁有一個全面而靈活的生態系統,包含各種工具、庫和社區資源,可助力研究人員推動先進的機器學習技術的發展,并使用開發者能夠輕松地構建和部署由機器學習提供支持的應用。
TensorFlow的特征如下:
- 輕松地構建模型:它可以使用API輕松地構建和訓練機器學習模型,這時的我們能夠快速迭代模型并輕松地調試模型。
- 隨時隨地進行可靠的機器學習生產:它可以在CPU和GPU上運行,可以運行在臺式機、服務器和手機移動端等設備上。無論使用哪種語言,都可以在云端、本地、瀏覽器中或設備上輕松地訓練和部署模型。
- 強大的研究實驗:現在科學家可以用它嘗試新的算法,產品團隊則用它來訓練和使用計算模型,并直接提供給在線用戶。
TensorFlow的官網地址為https://tensorflow.google.cn。
Part 2.16 PyTorch
PyTorch的前身是Torch,其底層和Torch框架一樣,但是使用Python重新寫了很多內容,不僅更加靈活,支持 動態圖,而且還提供了Python接口。
它是一個以Python優先的深度學習框架,能夠實現強大的GPU加速,同時還支持動態神經網絡,這是很多主流深度學習框架比如TensorFlow等都不支持的。
PyTorch是相當簡潔且高效的框架,從操作上來說,非常符合我們的使用習慣,這能讓用戶盡可能地專注于實現自己的想法,而不是算法本身。PyTorch是基于Python的,因此入門也更加簡單。PyTorch的官網地址為https://pytorch.org。
Part 2.17 Apache Superset
前面介紹的大數據工具,主要涉及大數據的存儲、計算和查詢,也涉及大數據的機器學習。但是這些數據的查詢和挖掘結果如何直觀地通過圖表展現到UI上,以輔助更多的業務人員進行決策使用,這也是一個非常重要的課題。
Apache Superset是由Airbnb開源的數據可視化工具,目前屬于Apache孵化器項目,主要用于數據可視化工作。分析人員可以不用直接寫SQL語句,而是通過選擇指標、分組條件和過濾條件,即可繪制圖表,這無疑降低了它的使用難度。它在可視化方面做得很出色,是開源領域中的佼佼者。
Apache Superset的官網地址為http://superset.spache.org。
注意:與Apache Superset類似的還有開源的Metabase,官網地址為https://www.metabase.com。
Part 2.18 Elasticsearch
Elasticsearch是一個開源的、分布式的、提供Restful API的搜索和數據分析引擎,它的底層是開源庫Apache Lucene。它使用Java編寫,內部采用Lucene做索引與搜索。它的目標是使全文檢索變得更加簡單的。
Elasticsearch具有如下特征:
- 一個分布式的實施文檔存儲
- 一個分布式實時分析搜索引擎
- 能橫向擴展,支持PB級別的數據。
Elasticsearch的官網地址為https://www.elastic.co/cn/。
注意:Elasticsearch中涉及的數據可以用Kibana實現數據可視化分析。
Part 2.19 Jupyter Notebook
Jupyter Notebook是一個功能非常強大的Web工具,不僅僅用于大數據分析。它的前身是IPython Notebook,是一個基于Web的交互式筆記本,支持40多種編譯語言。
它的本質是一個Web應用程序,便于創建和共享程序文檔,支持實時代碼、數學方程、可視化和Markdown。它主要用于數據清理和轉換、數值模擬、統計建模、機器學習等。
Jupyter Notebook的官網地址為https://jupyter.org
Part 2.20 Apache Zeppelin
Apache Zeppelin和Jupyter Notebook類似,是一個提供交互式數據分析且基于Web的筆記本。它基于Web的開源框架,使交互式數據分析變得可行的。Zeppelin提供了數據分析、數據可視化等功能。
借助Apache Zeppelin,開發人員可以構建數據驅動的、可交互且協作的精美的在線文檔,并且支持多種語言,包括Apache Spark、PySpark、Spark SQL、Hive、Markdown、Shell等。
Apache Zeppelin主要功能有:
- 數據提取
- 數據挖掘
- 數據分析
- 數據可視化展示
Apache Zeppelin的官網地址為http://zeppelin.apache.org。
大數據工具發展非常快,有很多工具可能都沒聽說過。就當前的行情來看,Apache Spark基本上已經成為批處理領域的佼佼者,且最新版本在流處理上也做得不錯,是實現流批一體化數據處理很好的框架。
需要大數據分析與處理的公司,應該根據自身的人員技能結構和業務需求,選擇合適的大數據工具。雖然大數據工具非常多,但是Hadoop、HBase、Kafka、Spark和Flink幾乎是必備的大數據工具。
Part 3 小結
大數據工具繁多,當前并沒有一個一站式的大數據解決方案,不同大數據工具需要配合才能構建出一個完整的大數據應用。毫無疑問,雖然大數據工具如此之多,但是常用的大數據工具中,Hadoop、HBase、Kafka、Spark或Flink是不可或缺的工具。
-- END
總結
以上是生活随笔為你收集整理的Python PySpark 大数据时代的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 采购虚拟磁带库(VTL)的四项关键性指标
- 下一篇: python 爬取智联招聘