Spark快速大数据分析之第二章Spark 下载与入门

时间:2023-02-01 08:10:29

2.1Spark下载与安装

JDK的安装

JDK的版本最好是1.8以上,使用的是ubuntu系统

安装源
        

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update

安装jdk
sudo apt-get install oracle-java8-installersudo update-java-alternatives -s java-8-oracle

测试

java -version
javac -version


    注:JDK的默认安装目录为:JAVA_HOME="/usr/lib/jvm/java-8-oracle"

Spark的安装

spark的下载网址是:http://spark.apache.org/downloads.html

选择需要的版本下载,最好下载预编译版(prebuilt)

对spark进行解压,即完成了安装。

减少日志信息输出,每次打开spark会输出一大堆提醒信息,为了减少输出,降低安全等级
        进入conf文件夹复制log4j.properties.template副本到conf目录
        并改名log4j.properties
        打开log4j.properties修改log4j.rootCategory=INFO, console为log4j.rootCategory=WARN, console

Spark的打开

ipython_notebook打开spark
        进入spark目录,在终端输入PYSPARK_DRIVER_PYTHON=ipython PYSPARK_DRIVER_PYTHON_OPTS='notebook' ./bin/pyspark

python打开spark
        进入spark目录终端输入bin/pyspark

直接打开Spark_shell

        进入spark目录终端输入./bin/spark_shell


Spark的简单应用

RDD 是 Spark 对分布式数据和计算的基本抽象,也就是说Spark中的数据类型就是RDD

统计行数

scala> val lines = sc.textFile("README.md") // 创建一个名为lines的RDD
lines: spark.RDD[String] = MappedRDD[...]
scala> lines.count() // 统计RDD中的元素个数
res0: Long = 127
scala> lines.first() // 这个RDD中的第一个元素,也就是README.md的第一行
res1: String = # Apache Spark

一个独立应用:单词统计

Spark中程序的执行需要多个节点共同完成,,其中包含一个驱动器和多个执行器,驱动器程序一般要管理多个执行器(executor)节点

Spark快速大数据分析之第二章Spark 下载与入门

初始化 SparkContext
import org.apache.spark.SparkConfimport org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
val conf = new SparkConf().setMaster("local").setAppName("wordCount")
val sc = new SparkContext(conf)
展示了创建 SparkContext 的最基本的方法,你只需传递两个参数:
        • 集群 URL:告诉 Spark 如何连接到集群上。在这几个例子中我们使用的是 local,这个
        特殊值可以让 Spark 运行在单机单线程上而无需连接到集群。
        • 应用名:在例子中我们使用的是 My App。当连接到一个集群时,这个值可以帮助你在
        集群管理器的用户界面中找到你的应用。

// 读取我们的输入数据val input = sc.textFile(inputFile)
// 把它切分成一个个单词
val words = input.flatMap(line => line.split(" "))
// 转换为键值对并计数
val counts = words.map(word => (word, 1)).reduceByKey{case (x, y) => x + y}
// 将统计出来的单词总数存入一个文本文件,引发求值
counts.saveAsTextFile(outputFile)