zoukankan      html  css  js  c++  java
  • Spark-Core RDD的创建

    一、RDD创建的3种方式:

      1、从集合中创建RDD

      2、从外部存储创建RDD

      3、从其他RDD转换得到新的RDD

    二、从集合中创建RDD

      1、使用parallelize函数创建 

    1 scala> val arr = Array(10,20,30,40,50,60)
    2 arr: Array[Int] = Array(10, 20, 30, 40, 50, 60)
    3 
    4 scala> val rdd1 = sc.parallelize(arr)
    5 rdd1: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[0] at parallelize at <console>:26

      2、使用makeRDD函数创建

    1 makeRDD和parallelize是一样的.
    2 scala> val rdd1 = sc.makeRDD(Array(10,20,30,40,50,60)) 3 rdd1: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[0] at makeRDD at <console>:24

      3、说明

      (1)一旦 RDD 创建成功, 就可以通过并行的方式去操作这个分布式的数据

      (2)parallelize和makeRDD还有一个重要的参数就是把数据集切分成的分区数

      (3)Spark 会为每个分区运行一个任务(task). 正常情况下, Spark 会自动的根据你的集群来设置分区数

    三、从外部存储创建 RDD

      Spark可以从任意Hadoop支持的存储数据源来创建分布式数据集

      可以是本地文件系统,HDFS、Cassandra、HBase、Amazon S3等

      Spark 支持 文本文件, SequenceFiles, 和其他所有的 Hadoop InputFormat  

    1 scala> var distFile = sc.textFile("words.txt")
    2 distFile: org.apache.spark.rdd.RDD[String] = words.txt MapPartitionsRDD[1] at textFile at <console>:24
    3 
    4 scala> distFile.collect
    5 res0: Array[String] = Array(hello, hello world, how are you, abc efg)

      说明:

      (1)url可以是本地文件系统文件, hdfs://..., s3n://...等等

      (2)如果是使用的本地文件系统的路径, 则必须每个节点都要存在这个路径

      (3)所有基于文件的方法, 都支持目录, 压缩文件, 和通配符(*). 例如:  

    textFile("/my/directory"), textFile("/my/directory/*.txt"), and textFile("/my/directory/*.gz")

      (4)textFile还可以有第二个参数, 表示分区数. 默认情况下, 每个块对应一个分区.(对 HDFS 来说, 块大小默认是 128M). 可以传递一个大于块数的分区数, 但是不能传递一个比块数小的分区数

      

    四、从其他 RDD 转换得到新的 RDD

     

  • 相关阅读:
    c语言中编写标准身高体重对照表
    c语言实现约数的枚举
    c语言中循环输出1234567890
    c语言中为九九乘法增加横纵标题
    c语言中多重循环
    c语言中绘制金字塔
    c语言中双重循环
    c语言中绘制长方形
    当当网代码1
    当当网代码4
  • 原文地址:https://www.cnblogs.com/hyunbar/p/12033517.html
Copyright © 2011-2022 走看看