spark-shell、spark架构设计、使用idea初始化spark运行环境、Spark RDD

spark-shell

spark自带的交互式工具

val rdd1 = sc.parallelize(1 to 10)
rdd1.collect
//res0: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
rdd1.partitions.size
//res1: Int = 1
val rdd2 = sc.makeRDD(5 to 15)
rdd2.collect
//res4: Array[Int] = Array(5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
rdd1 ++ rdd2
res6.collect
//res8: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 5, 6, 7, 8, 9, 10, 11, 1    2, 13, 14, 15)
rdd1.canEqual(rdd2)
//res9: Boolean = false
rdd1.cartesian(rdd2)
//res10: org.apache.spark.rdd.RDD[(Int, Int)] = CartesianRDD[3] at cartesian at <c    onsole>:28

rddWordCount

vavl rddWorCount = sc.parallelize(Array("hello world","hello java","hello scala","scala very good"))
rddWordCount.flatMap(x=>x.split(" ")).map(x=>(x,1)).reduceByKey(_+_).collect
rddWordCount.flatMap(x=>x.split(" ")).map(x=>(x,1)).groupByKey().map(x=>x._1,x._2.size).collect
rddWordCount.getNumPartitions

spark架构设计

1、运行架构
在这里插入图片描述
在驱动程序中,通过SparkContext主导应用的执行
SparkContext可以连接不同类型的Cluster Manager(Standalone、YARN、Mesos),连接后,获得集群节点上的Executor
一个Worker节点默认一个Executor,可通过SPARK_WORKER_INSTANCES调整
每个应用获取自己的Executor
每个Task处理一个RDD分区

2、spark架构核心组件
在这里插入图片描述

使用idea初始化spark运行环境

1、创建maven项目,添加依赖

<dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.scala-lang</groupId>
      <artifactId>scala-library</artifactId>
      <version>2.11.12</version>
    </dependency>
    <dependency>
      <groupId>org.apache.spark</groupId>
      <artifactId>spark-core_2.11</artifactId>
      <version>2.1.1</version>
    </dependency>
    <dependency>
      <groupId>org.apache.spark</groupId>
      <artifactId>spark-sql_2.11</artifactId>
      <version>2.1.1</version>
    </dependency>
  </dependencies>

2、SparkContext
连接Driver与Spark Cluster(Workers)
Spark的主入口
每个JVM仅能有一个活跃的SparkContext
SparkContext.getOrCreate

val conf = new SparkConf().setMaster("local[*]").setAppName("SparkDemo")
val sc = SparkContext.getOrCreate(conf)

3、SparkSession
Spark 2.0+应用程序的主入口:包含了SparkContext、SQLContext、HiveContext以及StreamingContext
SparkSession.getOrCreate

val spark:SparkSession = SparkSession.builder().master("local[*]").appName("sparkSessionDemo").getOrCreate()
println(spark)

4、使用spark实现wordcount

//内存中创建
val wordCount = sc.parallelize(Array("hello world","hello java","hello scala","scala very good"))
wordCount.flatMap(x=>x.split(" ")).map(x=>(x,1)).reduceByKey(_+_).collect.foreach(println)
//sc读取hdfs上的文件
val wordCountHdfs = sc.textFile("hdfs://192.168.232.211:9000/kb11file/hello.txt")
wordCountHdfs.collect.foreach(println)
//sc读取本地文件
val wordCount1 = sc.textFile("D:\\kb11\\sparkstu\\hello")
wordCount.collect.foreach(println)

5、使用spark-shell来读取文件

//读取本地文件
sc.textFile("file:///root/hello.txt").collect.foreach(println)
//读取hdfs文件
sc.textFile("hdfs://hadoop100:9000/kb11file/hello.txt").collect.foreach(println)

Spark RDD

RDD
Spark核心,主要数据抽象
Dataset
从Spark1.6开始引入的新的抽象,特定领域对象中的强类型集合,它可以使用函数或者相关操作并行地进行转换等操作
DataFrame
DataFrame是特殊的Dataset

Spark RDD概念-1
简单的解释
RDD是将数据项拆分为多个分区的集合,存储在集群的工作节点上的内存和磁盘中,并执行正确的操作
复杂的解释
RDD是用于数据转换的接口
RDD指向了存储在HDFS、Cassandra、HBase等、或缓存(内存、内存+磁盘、仅磁盘等),或在故障或缓存收回时重新计算其他RDD分区中的数据

Spark RDD概念-2
RDD是弹性分布式数据集(Resilient Distributed Datasets)
分布式数据集
RDD是只读的、分区记录的集合,每个分区分布在集群的不同节点上
RDD并不存储真正的数据,只是对数据和操作的描述
弹性
RDD默认存放在内存中,当内存不足,Spark自动将RDD写入磁盘
容错性
根据数据血统,可以自动从节点失败中恢复分区

RDD与DAG
两者是Spark提供的核心抽象
DAG(有向无环图)反映了RDD之间的依赖关系

RDD的特性
一系列的分区(分片)信息,每个任务处理一个分区
每个分区上都有compute函数,计算该分区中的数据
RDD之间有一系列的依赖
分区器决定数据(key-value)分配至哪个分区
优先位置列表,将计算任务分派到其所在处理数据块的存储位置

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
4S店客户管理小程序-毕业设计,基于微信小程序+SSM+MySql开发,源码+数据库+论文答辩+毕业论文+视频演示 社会的发展和科学技术的进步,互联网技术越来越受欢迎。手机也逐渐受到广大人民群众的喜爱,也逐渐进入了每个用户的使用。手机具有便利性,速度快,效率高,成本低等优点。 因此,构建符合自己要求的操作系统是非常有意义的。 本文从管理员、用户的功能要求出发,4S店客户管理系统的功能模块主要是实现管理员服务端;首页、个人心、用户管理、门店管理、车展管理、汽车品牌管理、新闻头条管理、预约试驾管理、我的收藏管理、系统管理,用户客户端:首页、车展、新闻头条、我的。门店客户端:首页、车展、新闻头条、我的经过认真细致的研究,精心准备和规划,最后测试成功,系统可以正常使用。分析功能调整与4S店客户管理系统实现的实际需求相结合,讨论了微信开发者技术与后台结合java语言和MySQL数据库开发4S店客户管理系统的使用。 关键字:4S店客户管理系统小程序 微信开发者 Java技术 MySQL数据库 软件的功能: 1、开发实现4S店客户管理系统的整个系统程序; 2、管理员服务端;首页、个人心、用户管理、门店管理、车展管理、汽车品牌管理、新闻头条管理、预约试驾管理、我的收藏管理、系统管理等。 3、用户客户端:首页、车展、新闻头条、我的 4、门店客户端:首页、车展、新闻头条、我的等相应操作; 5、基础数据管理:实现系统基本信息的添加、修改及删除等操作,并且根据需求进行交流信息的查看及回复相应操作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值