1.Spark的主要特點
1.1 速度快
Spark 使用DAG 排程器、查詢優化器和實體執行引擎,能夠在批處理和流資料獲得很高的性能。根據官方的統計,它的運算速度是hadoop的100x倍,應該是有一定的條件吧!
1.2 使用簡單
Spark的易用性主要展現在兩個方面。一方面,我們可以用較多的程式設計語言來寫我們的應用程式,比如說Java,Scala,Python,R 和 SQL;另一方面,Spark 為我們提供了超過80個高階操作,這使得我們十分容易地建立并行應用,除此之外,我們也可以使用Scala,Python,R和SQL shells,以實作對Spark的互動。
df = spark.read.json("logs.json") df.where("age > 21") .select("name.first").show()
**Spark's Python DataFrame API
Read JSON files with automatic schema inference**
1.3 通用性強
與其說通用性高,還不如說它內建度高,如圖所示:以Spark為基礎建立起來的子產品(庫)有Spark SQL,Spark Streaming,MLlib(machine learning)和GraphX(graph)。我們可以很容易地在同一個應用中将這些庫結合起來使用,以滿足我們的實際需求。
1.4 到處運作
Spark應用程度可以運作十分多的架構之上。它可以運作在Hadoop,Mesos,Kubernetes,standalone,或者雲伺服器上。它有多種多種通路源資料的方式。可以用standalone cluster模式來運作Spark應用程式,并且其應用程式跑在Hadoop,EC2,YARN,Mesos,或者Kubernates。對于通路的資料源,我們可以通過使用Spark通路HDFS,Alluxio,Apache Cassandra,HBase,Hive等多種資料源。
2.Spark主要包含的子產品
2.1 Spark Core
2.2 Spark SQL
2.3 Spark Streaming
2.4 Spark ML