Spark学习总结之RDD-Spark编程的基石

一 概述
概括而言,每一个Spark应用程序包含一个运行在主函数的驱动程序和在集群中运行和执行的各种并行操作。RDD(Resilient Distributed Dataset:弹性分布数据集)是Spark提供的主要抽象概念。那RDD到底是什么呢?它是集群跨节点分区元素的集合,这个集合可以被并行处理。创建RDD的方式有两种:一种是用Hadoop文件系统中或者其它可以支持Hadoop的文件系统中的文件创建:另一种是使用在驱动程序中Scala集合。用户创建RDD后,我们可以对它进行Transformatiom操作。除此之外,我们也可以对RDD进行持久化操作,将它放在内存中,这样做的目的是可以实现跨并行运行对RDD的重用操作。
Spark 中第二个抽象概念是共享变量,它可以在并行操作中被使用。默认情况下,当Spark并行运行一个函数时(作为不同节点Tasks的集合),它将函数中被使用的每个变量的复本分发到每一个Task中,有时,变量需要在跨tasks之间,或者在task和驱动程度之间进行数据共享。Spark 支持两种类型的共享变量:一个是广播变量,这个比较形象,就是这种变量可以被使用来缓存在所有节点的内存中;另一种是累加器,这种变量只有‘增加’操作,比如计数和计算和。
1、 应用程序关联 Spark

Spark 2.4.0 默认支持Scala 2.11版本,当然它也支持其它版本的Scala,建议使用兼容版本的Scala 2.11版本。写Spark应用,建议使用Maven依赖:

groupId = org.apache.spark
artifactId = spark-core_2.11
version = 2.4.0

如果我们还想访问HDFS集群,也可以根据自己的HDFS版本加上以下MAVEN依赖

groupId = org.apache.hadoop
artifactId = hadoop-client
version = <your-hdfs-version>

最后需要引入我们需要的Spark类:

 import org.apache.spark.SparkContext
 import org.apache.spark.SparkConf
 (Before Spark 1.3.0, you need to explicitly import org.apache.spark.SparkContext._ to enable essential implicit conversions.)

2、初始化Spark
创建Spark 程序第一件事情就是创建一个SparkContext对象,它告诉我们Spark 怎样访问一个集群。而创建一个SparkContext,首先需要build一个SparkConf对象,这个对象包含应用程序的信息。
注意:第一个JVM只能包含一个活跃的SparkContext,必须在创建一个新的SparkContext之前stop掉。

    Scala :
   val conf = new SparkConf().setAppName(appName).setMaster(master)
    				new SparkContext(conf)
    Java: 
        SparkConf conf = new  					SparkConf().setAppName(appName).setMaster(master);
       JavaSparkContext sc = new JavaSparkContext(conf);
    Python:
    	conf = SparkConf().setAppName(appName).setMaster(master)
    	sc = SparkContext(conf=conf)

Notes:
(1) appName 这个参数自己应用程序的名称,自己定义就好了!
(2) master 是a Spark, Mesos 或者YARN 集群的URL, 也或者是在local 模式一个特别字符串-“local”。
(3) 在实际运用中,当在集群运行spark程序时,不要硬编码,用spark-submit launch 应用程序和接收。
(4) 对于本地test和单元测试,可以传递‘local’这个参数运行进程中的Spark。

3、Shell的使用

$ ./bin/spark-shell --master local[4]
Or, to also add code.jar to its classpath, use:

$ ./bin/spark-shell --master local[4] --jars code.jar
To include a dependency using Maven coordinates:

$ ./bin/spark-shell --master local[4] --packages "org.example:example:0.1"
For a complete list of options, run spark-shell --help. Behind the scenes, spark-shell invokes the more general spark-submit script.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值