Spark下载与入门(Spark自学二)

2.1 下载Spark

  略

2.2 Spark中Python和Scala的shell

  Spark shell可用来与分布式存储在许多机器的内存或者硬盘上的数据进行交互,并且处理过程的分发由Spark自动控制完成。

  降低shell日志级别:conf目录下创建名为log4j.properties文件,将log4j.properties.template文件中内容复制到log4j.properties文件,找到log4j.rootCategory=INFO, console,将其改为log4j.rootCategory=WARN, console

  例2.1: Python行数统计

>>> lines = sc.textFile("README.md")
>>> lines.count()
103                                                                             
>>> lines.first()
u'# Apache Spark'

  例2-2: Scala行数统计

scala> val lines = sc.textFile("README.md")
lines: org.apache.spark.rdd.RDD[String] = README.md MapPartitionsRDD[1] at textFile at <console>:24

scala> lines.count()
res0: Long = 103                                                                

scala> lines.first()
res1: String = # Apache Spark

2.3 Spark核心概念简介

  从上层来看,每个Spark应用都由一个驱动器程序来发起集群上的各种并行操作。驱动器程序包含应用的main函数,并且定义了集群上的分布式数据集,还对这些分布式数据集应用了相关操作。

  驱动器程序通过一个SparkContext对象来访问Spark。这个对象代表对计算集群的一个连接。

  一旦有了SparkContext,你就可以用它来创建RDD。

  要执行这些操作,驱动器程序一般要管理多个执行器节点。比如,如果我们在集群上运行count()操作,那么不同的节点会统计文件的不同部分的行数。

  例2-4:Python版本筛选的例子

>>> lines = sc.textFile("README.md")
>>> pythonLines = lines.filter(lambda line:"Python" in line)
>>> pythonLines.first()
u'high-level APIs in Scala, Java, Python, and R, and an optimized engine that'

  例2-5:Scala版本筛选的例子

scala> val lines = sc.textFile("README.md")
lines: org.apache.spark.rdd.RDD[String] = README.md MapPartitionsRDD[1] at textFile at <console>:24

scala> val pythonLines = lines.filter(line => line.contains("Python"))
pythonLines: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[2] at filter at <console>:26

scala> pythonLines.first()
res0: String = high-level APIs in Scala, Java, Python, and R, and an optimized engine that

  Spark会自动将函数(比如line.contains("Python"))发到各个执行器节点上。这样,就可以在单一的驱动器程序中编程,并且让代码自动运行在多个节点上。

2.4 独立应用

  Spark也可以在Java、Scala或Python的独立程序中被连接使用,这与在shell中使用的区别在于我们需要自行初始化SparkContext。

  在Python中,我们可以把应用写成Python脚本,然后用Spark自带的bin/spark-submit脚本来运行。例:bin/spark-submit my_script.py

  2.4.1 初始化SparkContext

    例2-7:在Python中初始化Spark

from pyspark import SparkConf, SparkContext

conf = SparkConf().setMaster("local").setAppName("My App")
sc = SparkContext(conf = conf)

    例2-8:在Scala中初始化Spark

      略

  2.4.2 构建独立应用

    待学习。

posted @ 2017-10-11 14:46  右介  阅读(803)  评论(0编辑  收藏  举报