Spark 中 RDD 的创建

在 Spark 中创建 RDD 的创建方式可以分为四种:
1、从集合(内存)中创建 RDD

package spark.core.rdd

import org.apache.spark.{SparkConf, SparkContext}

/**
 * 从集合(内存)中创建 RDD
 * 1、parallelize
 * 2、makeRDD
 * 从底层代码实现来讲,makeRDD 方法其实就是 parallelize 方法。
 */
object Spark_RDD_Memory {
  def main(args: Array[String]): Unit = {
    val sparkConf = new SparkConf().
      setMaster("local[*]").
      set("spark.driver.host", "localhost").
      setAppName("memory rdd")
    val sparkContext = new SparkContext(sparkConf)
    // parallelize:并行
    val rdd1 = sparkContext.parallelize(
      List(1, 2, 3, 4)
    )
    val rdd2 = sparkContext.makeRDD(
      List(1, 2, 3, 4)
    )
    println(rdd1.collect().mkString(","))
    println(rdd2.collect().mkString(","))
    sparkContext.stop()
  }
}

2、从外部存储(文件)创建 RDD
由外部存储系统的数据集创建 RDD 包括:本地的文件系统,所有 Hadoop 支持的数据集,比如 HDFS、HBase 等。

package spark.core.rdd

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
 * 从文件中创建 RDD
 * 用 textFile 创建,除了本地路径,也可以读取 hdfs 及 hbase 等。
 */
object Spark_RDD_File {
  def main(args: Array[String]): Unit = {
    val sparkConf = new SparkConf().
      setMaster("local[*]").
      set("spark.driver.host", "localhost").
      setAppName("file rdd")
    val sparkContext = new SparkContext(sparkConf)
    // 注意事项:
    // 1、path:读取文件(目录的)路径。
    // 2、path 可以设置为相对路径,如果是idea,相对路径的位置就是从项目的根开始查找。
    // 3、spark 读取文件时默认采用 hadoop 读取文件的规则,一行一行读取。
    // 4、如果路径指向的为文件目录,这个目录下的文本文件都会被读取。
    // 5、文件路径可以采用通配符 * 等。
    // 6、文件路径可以指向第三方存储系统 hdfs 等。
//    val fileRDD: RDD[String] = sparkContext.textFile("input")
    val fileRDD: RDD[String] = sparkContext.textFile("hdfs://hadoop151:9000/word.txt")
    fileRDD.collect().foreach(println)
    sparkContext.stop()
  }
}

3、从其他 RDD 创建
主要是通过一个 RDD 运算完后,再产生新的 RDD。

4、直接创建 RDD
使用 new 的方式直接构造 RDD,一般由 Spark 框架自身使用。

你可能感兴趣的:(spark)