Spark學(xué)習(xí)筆記1

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
    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容