【spark】RDD建立

首先咱们要创建 sparkconf 配置文件,而后经过配置文件来创建sparkcontext。java

import org.apache.spark._
object MyRdd {
    def main(args:Array[String]): Unit ={
        //初始化配置:设置主机名和程序主类的名字
        val conf = new SparkConf().setMaster("local[*]").setAppName("MyRdd");
        //经过conf来建立sparkcontext
        val sc = new SparkContext(conf);
      
    }
}

而后咱们经过 sparkcontext 来建立RDDapache

建立RDD的几种方式json

1.基于程序中的集合建立RDD-做用:主要用于测试 oop

  经过 sc.parallelize(collection)方法来建立RDD测试

/*
        * 从scala集合中建立RDD
        * 计算:1+2+3+...+100
        */
        val nums = List(1,2,3,4,5);//集合
        val rdd = sc.parallelize(nums);//建立rdd
        val sum = rdd.reduce(_+_);
        println(sum);

2.基于本地文件建立RDD-做用:大数据量的测试  大数据

"file:///home/hadoop/spark-1.6.0-bin-hadoop2.6/examples/src/main/resources/people.json"

3.基于HDFS建立RDD-做用:生产环境最经常使用的RDD建立方式spa

"hdfs://112.74.21.122:9000/user/hive/warehouse/hive_test"

  经过sc.textFile(file)方法来读取文件scala

/*
        * 从本地文件系统建立RDD
        * 计算 people.json 文件中字符总长度
        */
        val rows = sc.textFile("file://")//文件地址或者HDFS文件路径
        val length = rows.map(row=>row.length()).reduce(_+_)
        println("total chars length:"+length)

  能读取文件,固然能保存文件,咱们能够把经过 sc.saveAsTextFile("file://") 把 rdd 内容保存到文件中3d

  例如,咱们保存把一个rdd保存到了/home/writeout.txt code

val rdd = sc.textFile("file:///home/word.txt");
rdd.saveAsTextFile("file:///home/writeout.txt");//把rdd写入/home/writeout.txt

  可是咱们打开/home文件夹,发现writeout并非txt文件而是一个文件夹,咱们打开文件夹,结构以下

       

  咱们保存错了嘛?没有,这时正常的。part-00000表明的是分区,若是有多个分区,会有多个part-xxxxxx的文件。

  若是咱们要再次读取这个保存的文件并不须要一个一个分区读取,直接读取就能够了,spark会自动加载全部分区数据。 

val rdd = sc.textFile("file:///home/writeout/part-00000");//咱们并不用这样一个一个读取
val rdd = sc.textFile("file:///home/writeout.txt");//直接这样读取,就会自动把全部分区数据加载到rdd中 

4.基于DB、NoSQL(例如HBase)、S三、基于数据流建立RDD

相关文章
相关标签/搜索