Spark基础概念(2)

本文介绍了如何使用Spark创建SparkContext并进行基本的RDD操作,包括读取HDFS文件、过滤数据、缓存及计数等步骤。同时探讨了RDD的分区属性与依赖关系,以及Spark如何实现数据本地化。
摘要由CSDN通过智能技术生成
val sc=new SparkContext("spark://localhost:7077","ApplicationName","SPARK_HOME","Your_APP_Jar")   //创建操作:SparkContext负责创建Spark上下文环境
val file=sc.textFile("hdfs://localhost:9000/.../Log") //从HDFS中读取文件val filterRDD=file.filter(_.contains("Hello World")) //转换操作:将一个RDD转换成另一个RDDfilterRDD.cache() //控制操作:默认将该RDD缓存在内存中filterRDD.count() //行动操作:触发Spark运行的操作(Spark是惰性计算)

RDD(Resilient Distributed DataSets):弹性分布式数据集,即一个RDD代表一个被分区的只读数据集。

RDD是一个分区的数据集,那么肯定具备分区的属性:

val rdd=sc.parallelize(1 to 100,2)   //分区数是2
rdd.partitions.size    //结果是2

也可以不指定分区数,默认值,是这个程序所分配到的资源的CPU核的个数。

RDD来源:1.内存集合和外部存储系统,2.通过转换操作


RDD优先位置

Spark是“移动数据 不如 移动计算”的理念,尽可能的将任务分配到数据块所在的存储的位置。

preferredLocations   返回每一个数据块所在的机器名或者IP地址,如果每一块数据是多分存储,那就返回多个机器地址。
val rdd=sc.textFile("hdfs://localhost:9000/.../Log")   //从HDFS中读取文件
val hadoopRDD=rdd.dependencies(0).rdd  //找到最原始的RDD
hadoopRDD.partitions.size   //最原始的RDD的分区数
hadoopRDD.preferredLocations(hadoopRDD.partitions(0))    //返回第一个分区的机器地址

RDD依赖关系

(以父RDD的一个分区为出发点讨论,只需要看父RDD的一个分区被几个子RDD的分区依赖就行)

窄依赖(Narrow Dependencies):每一个父RDD的分区最多只被子RDD的一个分区所使用。1 :1 

宽依赖 (Wide Dependencies):多个子RDD的分区会依赖同一个父RDD的分区。1 :多


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值