RDD是什么

基本操作

  • wordcount.txt文件
hadoop lizemin
lizemin hadoop
lzm hadoop
  • bin/spark-shell 操作命令
val rdd1 = sc.textFile("file:///export/data/wordcount.txt")

val rdd2 = rdd1.flatMap(item=> item.split(" "))

val rdd3 = rdd2.map(item => (item,1))

val rdd4 = rdd3.reduceByKey((curr,agg) => curr + agg)

rdd4.collect()

res0: Array[(String, Int)] = Array((lizemin,2), (hadoop,3), (lzm,1))
  • bin\spark-submit 操作命令
/**
   * 提交运行
   * bin/spark-submit --class net.jd.spark.rdd.WordCount2 --master spark://node01:7077 spark-0.0.1.jar
   * @param args
   */
  def main(args: Array[String]): Unit = {
    //    创建SparkContext
    val conf = new SparkConf().setAppName("word_count")
    val sc = new SparkContext(conf)
    //    加载文件
    val rdd1: RDD[String] = sc.textFile("/export/data/wordcount.txt")
    //    处理
    val rdd2: RDD[String] = rdd1.flatMap(item => item.split(" "))
    val rdd3: RDD[(String, Int)] = rdd2.map(item => (item, 1))
    val rdd4: RDD[(String, Int)] = rdd3.reduceByKey((curr, agg) => curr + agg)
    //    得到结果
    val result: Array[(String, Int)] = rdd4.collect()
    result.foreach(item => println(item))

  }

RDD特点

1. RDD是数据集
2. RDD是编程模型
3. RDD相互之间有依赖关系
4. RDD是可以分区的

核心对象,sparkContext

  @Test
  def sparkContext(): Unit = {
    val conf: SparkConf = new SparkConf().setMaster("local[6]").setAppName("spark_context")
    val sc = new SparkContext(conf)
  }

从本地集合创建

  @Test
  def rddCreationLocal(): Unit = {
    val seq = Seq("test1", "test2", "test3")

    val rdd1: RDD[String] = sc.parallelize(seq, 2)
    val rdd3: RDD[String] = sc.parallelize(seq)

    val rdd2: RDD[String] = sc.makeRDD(seq, 2)
    val rdd4: RDD[String] = sc.makeRDD(seq)

  }

从文件创建

  @Test
  def rddCreationFiles(): Unit = {
    sc.textFile("")

    /**
     *
     * 1. 传入一个 文件路径
     * hdfs://
     * file://
     * /../   如果在本地 读取的是本地文件  如果集群 读取的是 hdfs
     *
     * 2. 是否支持分区,
     * 支持,
     * 如果本地 取得是本地 cpu盒数 和 2 比较取小
     * 如果集群 由HDFS的block决定
     *
     * 3. 支持什么平台
     * AWS
     * 阿里云
     *
     */

  }

从RDD衍生

  @Test
  def rddCreateFromRDD(): Unit = {
    val rdd1: RDD[Int] = sc.parallelize(Seq(1, 2, 3))
    // 通过算子操作 , 生成新的rdd
    // 原地计算
    val rdd2: RDD[Int] = rdd1.map(item => item)

  }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值