Spark之RDD

RDD(Resilient Distributed Datasets)是Apache Spark中最基本的数据抽象。

RDD是一个可分区、可并行处理的数据集,它是不可变的,意味着它的数据不能被修改。RDD可以从内存中的数据集、Hadoop文件系统或其他数据源中创建,可以通过转换操作(如map、filter、reduce等)来进行处理,并且可以缓存到内存中以提供更快的访问速度。

RDD具有以下特点:

  1. 分区:RDD将数据集分成多个分区,每个分区都可以在不同的计算节点上进行处理。

  2. 弹性:RDD具有容错性,当计算节点发生故障时,RDD可以自动恢复并继续计算。

  3. 不可变性:RDD的数据是不可修改的,只能通过生成新的RDD来进行处理。

  4. 惰性计算:RDD支持惰性计算,即只有在需要结果时才会执行计算,这样可以减少不必要的计算开销。

分别使用intersection(),subtract(),cartesian()方法进行简单的集合操作

object test {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setMaster("local").setAppName("PartialFunction")
    val sc = new SparkContext(conf)


    val rdd01 = sc.makeRDD(List(1,3,5,7))
    val rdd02 = sc.makeRDD(List(1,4,6,8))

    rdd01.cartesian(rdd02).collect.foreach(println)

    rdd01.intersection(rdd02).collect.foreach(println)

    rdd01.subtract(rdd02).collect.foreach(println)
    rdd01.subtract(rdd01).collect.foreach(println)

    
  }
}

运行结果:

RDD提供了一系列的操作,包括转换操作和行动操作。转换操作可以将一个RDD转换为另一个RDD,而行动操作则触发对RDD的计算并返回结果。RDD支持常见的转换操作,如map、filter、reduce等,以及行动操作,如count、collect、save等。

RDD在Spark中被广泛应用于大规模数据处理和分布式计算任务中,它的设计理念和特点使得Spark能够在大数据处理和机器学习等领域具有高性能和高可扩展性。

创建RDD的方式:

一:从内部中读取数据创建

  • 将程序中已有的集合传给SparkContextparallelize()
val lines = SC.parallelize(List(1,2,3,4))

二:从外部读取数据创建

  • 读取一个外部数据集
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext

// local:本地模式运行
val conf = new SparkConf().setMaster('local').setAppName("appname")
val sc = new SparkContext(conf)
lines = sc.textFile("README.md")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值