spark shell

启动spark-shell客户端

spark自带的交互式shell程序,可以在该命令行下使用scala编写spark程序

启动spark-shell

bin/spark-shell \
--master spark://m1:7077 \
--executor-memory 512m \
--total-executor-cores 2

--master:指定spark集群的master节点,如果不指定则是启动本地模式一个worker进程,如果指定为local则本地启动一个worker进程,如果为local[k]则启动k个worker进程,如果为local[*]则启动的worker进程和机器核心数一样
--executor-memory:指定每一个executor可以占用的内存
--total-executor-cores:指定整个应用可以使用的核心数

 

常用的方法

RDD的方法分为transformations和actions,当对RDD进行transformation时,不会立刻执行,因为transformation是延迟执行的,

此时只会记录RDD的lineage,transformation返回的数据还是RDD。action会立刻执行,返回操作后的结果集

1、textFile: 加载文件,如果文件不是分布式文件,则每个work节点都需要有这个文件,不然运行的时候会提示文件找不到错误

     sc.textFile("README.md") 

2、addFile:添加文件到spark中

     sc.addFile("../test")

     可以通过 sc.textFile(SparkFiles.get("test"))进行文件的加载,注意引入import org.apache.spark.SparkFiles

3、count:RDD中有多少条数据

     val input = sc.textFile("../README.md")

      input.count

4、first:返回RDD中的第一条数据

     input.first

5、map:对RDD中的每一条数据做map方法中传递的方法的操作

    val spaceSplit = input.map(_.split(" "))

     spaceSplit.first

6、flatMap:对RDD的数据进行映射后,合并成一个集合

     val fmInput = input.flatMap(_.split(" "))

flatMap:

map:

7、take:取RDD中的前几条数据

    val input = sc.textFile("../README.md")

    取第一条数据:input.take(1)

    取前三条数据:input.take(3)

8、collect:以集合的形式返回RDD中的数据

    input.collect

9、reduceByKey:对相同key的值,做给定方法的操作,下面是一个spark实现的map reduce统计文件中的单词个数

     input.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_+_).collect

 

posted @ 2016-12-06 10:20  天之涯0204  阅读(672)  评论(0编辑  收藏  举报