设为首页 加入收藏

TOP

Spark编程指南-快速开始
2019-03-13 01:24:00 】 浏览:55
Tags:Spark 编程 指南 快速 开始

本教程简要介绍了如何使用Spark。我们将首先通过Spark的交互式shell(在Python或Scala中)介绍API,然后展示如何使用Java,Scala和Python编写应用程序。

首先,从Spark网站下载Spark的打包版本 。由于我们不会使用HDFS,您可以下载任何版本的Hadoop的软件包。

请注意,在Spark 2.0之前,Spark的主要编程接口是Resilient Distributed Dataset(RDD)。在Spark 2.0之后,RDD被数据集取代,数据集像RDD一样强类型,但在底层有更丰富的优化。仍然支持RDD接口,您可以在RDD编程指南中获得更详细的参考。但是,我们强烈建议您切换到使用数据集,它具有比RDD更好的性能。请参阅SQL编程指南以获取有关数据集的更多信息。


使用Spark Shell进行交互式分析

基础

在Spark包目录下执行 进入Spark Shell

./bin/spark-shell

从源目录中的 README 文件中的文本创建一个新的 RDD

scala> val textFile = spark.read.textFile("README.md")
textFile: org.apache.spark.sql.Dataset[String] = [value: string]

直接从Dataset获取值,或者转换数据集以获取新值

数据集中item的数量

scala> textFile.count() 
res0: Long = 126

数据集中第一个item

scala> textFile.first
res2: String = # Apache Spark

有关数据集操作的更多信息

数据集操作和转换可用于更复杂的计算。
Spark可以轻松实现MapReduce wordcount

scala> textFile.flatMap( line => line.split(" ")).groupByKey(identity).count.collect
[Stage 4:==============================>                     [Stage 4:========================================>           [Stage 4:====================================================                                                             res7: Array[(String, Long)] = Array((online,1), (graphs,1), (["Parallel,1), (["Building,1), (thread,1), (documentation,3), (command,,2), (abbreviated,1), (overview,1), (rich,1), (set,2), (-DskipTests,1), (name,1), (page](http://spark.apache.org/documentation.html).,1), (["Specifying,1), (stream,1), (run:,1), (not,1), (programs,2), (tests,2), (./dev/run-tests,1), (will,1), ([run,1), (particular,2), (option,1), (Alternatively,,1), (by,1), (must,1), (using,5), (you,4), (MLlib,1), (DataFrames,,1), (variable,1), (Note,1), (core,1), (more,1), (protocols,1), (guidance,2), (shell:,2), (can,7), (site,,1), (systems.,1), (Maven,1), ([building,1), (configure,1), (for,12), (README,1), (Interactive,2), (how,3), ([Configuration,1), (Hive,2), (system,1), (provides,1), (Hadoop-supported,1), (pre-built,1...

缓存

Spark还支持将数据集提取到群集范围的内存缓存中

独立的应用

可以创建一个包含应用程序代码的 JAR 包,然后使用 spark-submit 脚本来运行我们的程序。

按项目结构放置文件 打包成jar包 上传
结构

项目机构SimpleApp.scala

import org.apache.spark.sql.SparkSession

object SimpleApp {
  def main(args: Array[String]): Unit = {
    val logFile = "/usr/local/spark/README.md"
    val spark = SparkSession.builder().appName("Simple Application").getOrCreate()
    val logData = spark.read.textFile(logFile)
    val numAs = logData.filter(line => line.contains("a")).count()
    val numBs = logData.filter(line => line.contains("b")).count()
    println(s"Lines with a: $numAs,Lines with b: $numBs")
    spark.stop()
  }
}

build.sbt

name := "Simple Project"

version := "0.1"

scalaVersion := "2.11"

libraryDependencies += "org.apache.spark" %% "spark-sql" % "2.4.0"

上传到虚拟机运行:

./bin/spark-submit --class "SimpleApp" --master local[4] /root/test/Simple\ Project.jar

运行成功
打印出包含文件中a的行数和包含b的行数

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Spark运行常见问题 下一篇Spark与深度学习框架——H2O、dee..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目