《Spark 2》--Maven搭建Spark应用程序、创建RDD时分区个数(部分源码解析)、RDD的说明、RDD分区的首选位置、依赖关系

    1.构建独立应用,采用Maven搭建Spark应用程序
       a. 1.新建spark的project项目构建maven项目
           2.本地仓库seting修改 右边compile (每次创建 项目本地仓库都需要修改)
           3.File -->Project Structure..选择+ -->lib 选scala -->Dependences 勾选scala-sdk-2.11.8
           4.https://mvnrepository.com/search?q=spark 
             Spark Project Core
           5.加载spark-core_2.11依赖库 -->Import Changes -->2.1.2:【在pom.xml 文件中】
          <dependencies>
            <dependency>
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-core_2.11</artifactId>
                <version>2.1.2</version>
            </dependency>
          </dependecies>
       注意:spark-core_{版本号},版本号应为scala的对应版本
             version为spark 2.1.2

            6.创建spark文件 标记为源码包
             main -->新建文件夹 (sparkTest) -->右键Mark Directory as  -->Resources Root
       b.编写spark Driver端程序
          1).创建SparkConf对象,并指定集群模式和AppName;
          2).创建SparkContext对象,生成sc
          3).创建RDD
          4).针对业务需求,编写相应的RDD操作
    


    创建sc对象两种方式:
        1)spark shell: 直接可以用sc对象                                                                                                                                                        2)javaAPI:先创建SparkConf,再通过SparkConf创建SparkContext
            val conf = new SparkConf().setMaster("local").setAppName("wordcount")
            val sc = new SparkContext(conf)


    
    sc创建RDD3种方式:
        1)由外部存储系统的数据集创建,包括本地的文件系统,还有所有Hadoop支持的数据集,比如HDFS、Cassandra、HBase等
        rdd1 = sc.textFile("hdfs://slave1:9000/words.txt")
        
        2)由一个已经存在的集合创建。
        rdd2 = sc.parallelize(Array(1,2,3,4,5,6,7,8))

        3)由一个已经存在的集合创建makeRDD
        rdd3 = sc.makeRDD(Array(1,2,3,4,5,6,7,8)) 
 

    例1:  parallelize

import org.apache.spark.{SparkConf,SparkContext}
object WordCount {
     def main(args: Array[String]): Unit = {
         //构建Spark的conf对象,并通过setMaster方法设置集群模式运行的方式{“本地”},通过 
         //setAppName方法指定应用名字
         val conf = new SparkConf().setMaster("local").setAppName("ListTest")
         val sc = new SparkContext(conf); 
         val rdd = sc.parallelize(List(1,3,5,2,56))
         println(rdd.count())
     }
 }


     例2:textFile

import org.apache.spark.{SparkConf,SparkContext}
		object WordCount {
		  def main(args: Array[String]): Unit = {
			//构建Spark的conf对象,并通过setMaster方法设置集群模式运行的方式{“本地”},通过 
            //setAppName方法指定应用名字
			val conf = new SparkConf().setMaster("local").setAppName("wordcount")
			val sc = new  SparkContext(conf);
			val rdd = sc.textFile("file:///E:/inputwordcount")
			//1.统计rdd的行数
			println(rdd.count()) 
		  }
		}

    2.WordCount案例:

object WordCount {
      def main(args: Array[String]): Unit = {
        //构建Spark的conf对象,并通过setMaster方法设置集群模式运行的方式{“本地”},通过 
        //setAppName方法指定应用名字
        val conf = new SparkConf().setMaster("local").setAppName("wordcount")
        val sc = new  SparkContext(conf);
        val rdd = sc.textFile("file:///D:/测试数据/spark_wordcount.txt")
        
        //中间结果保存,不可变,称为 lineage(血统)
        //val rdd1 = rdd.flatMap(x=> x.split(" "))
        //val rdd2 = rdd1.map(x=>(x,1))
        //val rdd3 = rdd2.reduceByKey((x,y)=>x&#
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值