Apache Spark is a fast and general-purpose cluster computing system.
- spark 提供了 Java Scala Python and 的API。 在examples/src/main目錄下有Java和Scala例子, 用 bin/run-example 運(yùn)行。
- 通過運(yùn)行: ./bin/spark-shell –master local[2] 來進(jìn)行交互式的操作,這是學(xué)習(xí)sprak最好的方式
- 從1.4起spark也提供了R的api,./bin/sparkR –master local[2]
Quick Start
- spark 提供了Scala 和 Python的交互式分析shell來學(xué)習(xí)api ./bin/spark-shell
- RDD是分布式彈性數(shù)據(jù)集,可以理解為就是一個(gè)分布式的集合,這個(gè)集合的創(chuàng)建可以通過Hadoop 的 InputFormats,或者通過其他RDD轉(zhuǎn)換而來。
- RDD有動(dòng)作,他能夠返回值,以及轉(zhuǎn)換操作,他會(huì)返回一個(gè)指針指向新的RDD,通過RDD的filter操作返回一個(gè)新的RDD.
- RDD有很復(fù)雜的操作,他可以直接調(diào)用Scala Java的庫方法,使用的時(shí)候需要使用:import java.lang.Math來引入。
Caching
- spark 支持推送一個(gè)數(shù)據(jù)集到一個(gè)集群的緩存中,尤其是那種需要經(jīng)常重復(fù)讀取的數(shù)據(jù)。eg: linesWithSpark.cache()
Self-contained Applications(獨(dú)立的應(yīng)用程序)
- 創(chuàng)建Maven項(xiàng)目。
- pom.xml 文件如下:
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.10</artifactId>
<version>1.4.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
- 創(chuàng)建一個(gè)簡單的spark程序:
public class SimpleApp {
public static void main(String[] args) {
// 文件路徑
String logFile = "/home/wm/apps/spark-1.4.0-bin-hadoop2.6/README.md";
SparkConf conf = new SparkConf().setAppName("Simple Application");
JavaSparkContext sc = new JavaSparkContext(conf);
JavaRDD<String> logData = sc.textFile(logFile).cache();
@SuppressWarnings("serial")
long numAs = logData.filter(new Function<String, Boolean>() {
public Boolean call(String s) throws Exception {
return s.contains("a");
}
}).count();
@SuppressWarnings("serial")
long numBs = logData.filter(new Function<String, Boolean>() {
public Boolean call(String s) throws Exception {
return s.contains("b");
}
}).count();
System.out.println("Lines with a: " + numAs + ", lines with b: " + numBs);
sc.close();
}
}
- mvn pckage
- 將target目錄下的sparkdemo2-0.0.1-SNAPSHOT.jar文件放在spark的安裝目錄下。
- 在spark安裝目錄下執(zhí)行jar包中的程序,但是要指定執(zhí)行的class文件,這個(gè)class文件需要全路徑。例如:
./bin/spark-submit --class "com.wm.test.sparkdemo" --master local[4] sparkdemo-0.0.1-SNAPSHOT.jar