自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

什么是Apache Spark?數(shù)據(jù)分析平臺如是說

大數(shù)據(jù) Spark
Spark 可以用多種方式部署,它為 Java、Scala、Python,和 R 編程語言提供了本地綁定,并且支持 SQL、流數(shù)據(jù)、機(jī)器學(xué)習(xí),和圖處理。你將會發(fā)現(xiàn)它被銀行、電信公司、游戲公司、政府,和所有如 Apple、Facebook、IBM,和 Microsoft 等主要的科技巨頭公司使用。

自從 Apache Spark 2009 年在 U.C. Berkeley 的 AMPLab 默默誕生以來,它已經(jīng)成為這個世界上最重要的分布式大數(shù)據(jù)框架之一。Spark 可以用多種方式部署,它為 Java、Scala、Python,和 R 編程語言提供了本地綁定,并且支持 SQL、流數(shù)據(jù)、機(jī)器學(xué)習(xí),和圖處理。你將會發(fā)現(xiàn)它被銀行、電信公司、游戲公司、政府,和所有如 Apple、Facebook、IBM,和 Microsoft 等主要的科技巨頭公司使用。

什么是 Apache Spark?大數(shù)據(jù)分析平臺如是說

非常好,Spark 可以運(yùn)行在一個只需要在你集群中的每臺機(jī)器上安裝 Apache Spark 框架和 JVM 的獨立集群模式。然而,你將更有可能做的是,希望利用資源或集群管理系統(tǒng)來幫你按需分配工作。 在企業(yè)中,這通常意味著在 Hadoop YARN (這是 Cloudera 和 Hortonworks 分配運(yùn)行 Spark 任務(wù)的方式 )上運(yùn)行。盡管 work 是在增加了本地支持的 Kubernetes 上執(zhí)行,但是 Apache Spark 也可以在 Apache Mesos 上運(yùn)行。

如果你追求一個有管理的解決方案,那么可以發(fā)現(xiàn) Apache Spark 已作為 Amazon EMR、Google Cloud Dataproc, 和 Microsoft Azure HDInsight 的一部分。雇傭了 Apache Spark 創(chuàng)始人的公司 Databricks 也提供了 Databricks 統(tǒng)一分析平臺,這個平臺是一個提供了 Apache Spark 集群,流式支持,集成了基于 Web 的筆記本開發(fā),和在標(biāo)準(zhǔn)的 Apache Spark 分布上優(yōu)化了云的 I/O 性能的綜合管理服務(wù)。

值得一提的是,拿 Apache Spark 和 Apache Hadoop 比是有點不恰當(dāng)?shù)?。目前,在大多?shù) Hadoop 發(fā)行版中都包含 Spark 。但是由于以下兩大優(yōu)勢,Spark 在處理大數(shù)據(jù)時已經(jīng)成為***框架,超越了使 Hadoop 騰飛的舊 MapReduce 范式。

***個優(yōu)勢是速度。Spark 的內(nèi)存內(nèi)數(shù)據(jù)引擎意味著在某些情況下,它執(zhí)行任務(wù)的速度比 MapReduce 快一百倍,特別是與需要將狀態(tài)寫回到磁盤之間的多級作業(yè)相比時更是如此。即使 Apache Spark 的作業(yè)數(shù)據(jù)不能完全包含在內(nèi)存中,它往往比 MapReduce 的速度快10倍左右。

第二個優(yōu)勢是對開發(fā)人員友好的 Spark API 。與 Spark 的加速一樣重要的是,人們可能會認(rèn)為 Spark API 的友好性更為重要。

Spark Core

與 MapReduce 和其他 Apache Hadoop 組件相比,Apache Spark API 對開發(fā)人員非常友好,在簡單的方法調(diào)用后面隱藏了分布式處理引擎的大部分復(fù)雜性。其中一個典型的例子是幾乎要 50 行的 MapReduce 代碼來統(tǒng)計文檔中的單詞可以縮減到幾行 Apache Spark 實現(xiàn)(下面代碼是 Scala 中展示的):

 

  1. val textFile = sparkSession.sparkContext.textFile(“hdfs:///tmp/words”) 
  2. val counts = textFile.flatMap(line => line.split(“ “)) 
  3.                       .map(word => (word, 1)) 
  4.                       .reduceByKey(_ + _) 
  5. counts.saveAsTextFile(“hdfs:///tmp/words_agg”) 

通過提供類似于 Python、R 等數(shù)據(jù)分析流行語言的綁定,以及更加對企業(yè)友好的 Java 和 Scala ,Apache Spark 允許應(yīng)用程序開發(fā)人員和數(shù)據(jù)科學(xué)家以可訪問的方式利用其可擴(kuò)展性和速度。

Spark RDD

Apache Spark 的核心是彈性分布式數(shù)據(jù)集(Resilient Distributed Dataset,RDD)的概念,這是一種編程抽象,表示一個可以在計算集群中分離的不可變對象集合。 RDD 上的操作也可以跨群集分割,并以批處理并行方式執(zhí)行,從而實現(xiàn)快速和可擴(kuò)展的并行處理。

RDD 可以通過簡單的文本文件、SQL 數(shù)據(jù)庫、NoSQL 存儲(如 Cassandra 和 MongoDB )、Amazon S3 存儲桶等等創(chuàng)建。Spark Core API 的大部分是構(gòu)建于 RDD 概念之上,支持傳統(tǒng)的映射和縮減功能,還為連接數(shù)據(jù)集、過濾、采樣和聚合提供了內(nèi)置的支持。

Spark 是通過結(jié)合驅(qū)動程序核心進(jìn)程以分布式方式運(yùn)行的,該進(jìn)程將 Spark 應(yīng)用程序分解成任務(wù),并將其分發(fā)到完成任務(wù)的許多執(zhí)行程序的進(jìn)程中。這些執(zhí)行程序可以根據(jù)應(yīng)用程序的需要進(jìn)行擴(kuò)展和縮減。

Spark SQL

Spark SQL 最初被稱為 Shark,Spark SQL 對于 Apache Spark 項目開始變得越來越重要。它就像現(xiàn)在的開發(fā)人員在開發(fā)應(yīng)用程序時常用的接口。Spark SQL 專注于結(jié)構(gòu)化數(shù)據(jù)的處理,借用了 R 和 Python 的數(shù)據(jù)框架(在 Pandas 中)。不過顧名思義,Spark SQL 在查詢數(shù)據(jù)時還兼容了 SQL2003 的接口,將 Apache Spark 的強(qiáng)大功能帶給分析師和開發(fā)人員。

除了支持標(biāo)準(zhǔn)的 SQL 外,Spark SQL 還提供了一個標(biāo)準(zhǔn)接口來讀寫其他數(shù)據(jù)存儲,包括 JSON,HDFS,Apache Hive,JDBC,Apache Parquet,所有這些都是可以直接使用的。像其他流行的存儲工具 —— Apache Cassandra、MongoDB、Apache HBase 和一些其他的能夠從 Spark Packages 生態(tài)系統(tǒng)中提取出來單獨使用的連接器。

下邊這行簡單的代碼是從數(shù)據(jù)框架中選擇一些字段:

  1. citiesDF.select(“name”, “pop”) 

要使用 SQL 接口,首先要將數(shù)據(jù)框架注冊成一個臨時表,之后我們就可以使用 SQL 語句進(jìn)行查詢:

 

  1. citiesDF.createOrReplaceTempView(“cities”)  
  2. spark.sql(“SELECT name, pop FROM cities”) 

在后臺, Apache Spark 使用名為 Catalyst 的查詢優(yōu)化器來檢查數(shù)據(jù)和查詢,以便為數(shù)據(jù)局部性和計算生成有效的查詢計劃,以便在集群中執(zhí)行所需的計算。在 Apache Spark 2.x 版本中,Spark SQL 的數(shù)據(jù)框架和數(shù)據(jù)集的接口(本質(zhì)上是一個可以在編譯時檢查正確性的數(shù)據(jù)框架類型,并在運(yùn)行時利用內(nèi)存并和計算優(yōu)化)是推薦的開發(fā)方式。RDD 接口仍然可用,但只有無法在 Spark SQL 范例中封裝的情況下才推薦使用。

Spark MLib

Apache Spark 還有一個捆綁許多在大數(shù)據(jù)集上做數(shù)據(jù)分析和機(jī)器學(xué)習(xí)的算法的庫 (Spark MLib) 。Spark MLlib 包含一個框架用來創(chuàng)建機(jī)器學(xué)習(xí)管道和在任何結(jié)構(gòu)化數(shù)據(jù)集上進(jìn)行特征提取、選擇、變換。MLLib 提供了聚類和分類算法的分布式實現(xiàn),如 k 均值聚類和隨機(jī)森林等可以在自定義管道間自由轉(zhuǎn)換的算法。數(shù)據(jù)科學(xué)家可以在 Apache Spark 中使用 R 或 Python 訓(xùn)練模型,然后使用 MLLib 存儲模型,***在生產(chǎn)中將模型導(dǎo)入到基于 Java 或者 Scala 語言的管道中。

需要注意的是 Spark MLLib 只包含了基本的分類、回歸、聚類和過濾機(jī)器學(xué)習(xí)算法,并不包含深度學(xué)建模和訓(xùn)練的工具(更多內(nèi)容 InfoWorld’s Spark MLlib review )。提供深度學(xué)習(xí)管道的工作正在進(jìn)行中。

Spark GraphX

Spark GraphX 提供了一系列用于處理圖形結(jié)構(gòu)的分布式算法,包括 Google 的 PageRank 實現(xiàn)。這些算法使用 Spark Core 的 RDD 方法來建模數(shù)據(jù);GraphFrames 包允許您對數(shù)據(jù)框執(zhí)行圖形操作,包括利用 Catalyst 優(yōu)化器進(jìn)行圖形查詢。

Spark Streaming

Spark Streaming 是 Apache Spark 的一個新增功能,它幫助在需要實時或接近實時處理的環(huán)境中獲得牽引力。以前,Apache Hadoop 世界中的批處理和流處理是不同的東西。您可以為您的批處理需求編寫 MapReduce 代碼,并使用 Apache Storm 等實時流媒體要求。這顯然導(dǎo)致不同的代碼庫需要保持同步的應(yīng)用程序域,盡管是基于完全不同的框架,需要不同的資源,并涉及不同的操作問題,以及運(yùn)行它們。

Spark Streaming 將 Apache Spark 的批處理概念擴(kuò)展為流,將流分解為連續(xù)的一系列微格式,然后使用 Apache Spark API 進(jìn)行操作。通過這種方式,批處理和流操作中的代碼可以共享(大部分)相同的代碼,運(yùn)行在同一個框架上,從而減少開發(fā)人員和操作員的開銷。每個人都能獲益。

對 Spark Streaming 方法的一個批評是,在需要對傳入數(shù)據(jù)進(jìn)行低延遲響應(yīng)的情況下,批量微操作可能無法與 Apache Storm,Apache Flink 和 Apache Apex 等其他支持流的框架的性能相匹配,所有這些都使用純粹的流媒體方法而不是批量微操作。

Structured Streaming

Structured Streaming(在 Spark 2.x 中新增的特性)是針對 Spark Streaming 的,就跟 Spark SQL 之于 Spark 核心 API 一樣:這是一個更高級別的 API,更易于編寫應(yīng)用程序。在使用 Structure Streaming 的情況下,更高級別的 API 本質(zhì)上允許開發(fā)人員創(chuàng)建***流式數(shù)據(jù)幀和數(shù)據(jù)集。它還解決了用戶在早期的框架中遇到的一些非常真實的痛點,尤其是在處理事件時間聚合和延遲傳遞消息方面。對 Structured Streaming 的所有查詢都通過 Catalyst 查詢優(yōu)化器,甚至可以以交互方式運(yùn)行,允許用戶對實時流數(shù)據(jù)執(zhí)行 SQL 查詢。

Structured Streaming 在 Apache Spark 中仍然是一個相當(dāng)新的部分,已經(jīng)在 Spark 2.2 發(fā)行版中被標(biāo)記為產(chǎn)品就緒狀態(tài)。但是,Structure Streaming 是平臺上流式傳輸應(yīng)用程序的未來,因此如果你要構(gòu)建新的流式傳輸應(yīng)用程序,則應(yīng)該使用 Structure Streaming。傳統(tǒng)的 Spark Streaming API 將繼續(xù)得到支持,但項目組建議將其移植到 Structure Streaming 上,因為新方法使得編寫和維護(hù)流式代碼更加容易。

Apache Spark 的下一步是什么?

盡管結(jié)構(gòu)化數(shù)據(jù)流為 Spark Streaming 提供了高級改進(jìn),但它目前依賴于處理數(shù)據(jù)流的相同微量批處理方案。然而, Apache Spark 團(tuán)隊正在努力為平臺帶來連續(xù)的流媒體處理,這應(yīng)該能夠解決許多處理低延遲響應(yīng)的問題(聲稱大約1ms,這將會非常令人印象深刻)。 更好的是,因為結(jié)構(gòu)化流媒體是建立在 Spark SQL 引擎之上的,所以利用這種新的流媒體技術(shù)將不需要更改代碼。

除此之外,Apache Spark 還將通過 Deep Learning Pipelines 增加對深度學(xué)習(xí)的支持。 使用 MLlib 的現(xiàn)有管線結(jié)構(gòu),您將能夠在幾行代碼中構(gòu)建分類器,并將自定義 Tensorflow 圖形或 Keras 模型應(yīng)用于傳入數(shù)據(jù)。 這些圖表和模型甚至可以注冊為自定義的 Spark SQL UDF(用戶定義的函數(shù)),以便深度學(xué)習(xí)模型可以作為 SQL 語句的一部分應(yīng)用于數(shù)據(jù)。

這些功能目前都無法滿足生產(chǎn)的需求,但鑒于我們之前在 Apache Spark 中看到的快速發(fā)展,他們應(yīng)該會在2018年的黃金時段做好準(zhǔn)備。

責(zé)任編輯:未麗燕 來源: 36大數(shù)據(jù)
相關(guān)推薦

2022-06-01 08:30:00

技術(shù)修養(yǎng)

2011-03-30 15:14:31

對日外包程序員

2022-12-16 09:35:00

運(yùn)維開發(fā)

2015-09-23 09:24:56

spark數(shù)據(jù)分析

2015-10-16 09:21:13

SparkMySQL數(shù)據(jù)分析

2017-09-28 16:31:02

大數(shù)據(jù)數(shù)據(jù)分析漏斗模型

2024-11-08 12:36:35

2018-04-13 09:51:56

馬化騰互聯(lián)網(wǎng)數(shù)據(jù)

2022-05-12 13:44:35

數(shù)據(jù)分析數(shù)據(jù)

2017-04-11 09:08:02

數(shù)據(jù)分析Python

2019-06-19 16:01:14

Spark數(shù)據(jù)分析SparkSQL

2017-09-27 14:29:41

SupersetPython數(shù)據(jù)分析

2020-07-21 10:09:01

數(shù)據(jù)分析技術(shù)IT

2015-03-04 11:01:36

大數(shù)據(jù)數(shù)據(jù)分析分析

2015-07-29 16:19:54

大數(shù)據(jù)時代分析

2016-06-13 17:22:27

火炬數(shù)據(jù)楊大海

2017-07-22 00:41:27

大數(shù)據(jù)數(shù)據(jù)存儲

2021-01-25 20:20:35

數(shù)據(jù)分析SparkHadoop

2022-03-29 14:49:14

大數(shù)據(jù)數(shù)據(jù)分析

2021-03-07 09:07:04

數(shù)據(jù)分析平臺數(shù)據(jù)分析Chartio
點贊
收藏

51CTO技術(shù)棧公眾號