首先我们要建立 sparkconf 配置文件,然后通过配置文件来建立sparkcontext。

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 来创建RDD

创建RDD的几种方式

1.基于程序中的集合创建RDD-作用:主要用于测试

  通过 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创建方式

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

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

       /*
* 从本地文件系统创建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 内容保存到文件中

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

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)、S3、基于数据流创建RDD

 

最新文章

  1. js活动倒计时
  2. April Fools Day Contest 2014
  3. MFC下调用控制台和控制台下MFC库的支持
  4. 好用的SQLSERVER数据库自动备份工具SQLBackupAndFTP(功能全面)
  5. jQuery使用之(五)处理页面的事件
  6. python学习笔记3(字符串)
  7. AngularJS2学习
  8. Microsoft SQL Server 管理 (常用管理及维护命令)
  9. Linux驱动程序开发 - 设备控制接口
  10. Direct3D 11的流水线
  11. PAT (天梯)L2-004. 这是二叉搜索树吗?
  12. 基于spark和sparkstreaming的word2vec
  13. Microsoft Offce 使用纪事:oneNote笔记本分区删除
  14. POJ3083 Children of the Candy Corn(Bfs + Dfs)
  15. 这是要逆天么,看我控制台程序玩Microsoft XPS Document 打印
  16. Confluence 6 Microsoft SQL Server 设置准备
  17. VMware vCenter Server 6.5安装
  18. springMvc---跨服务器文件上传(实测总结)
  19. linxu自定义安装及网络配置
  20. flask-数据库模型设计2

热门文章

  1. (4.6)sql2008中的group by grouping sets
  2. html5.js让IE(包含IE6)支持HTML5元素方法
  3. python删除目录下七天前创建的文件
  4. beego——ORM使用方法
  5. django基础2: 路由配置系统,URLconf的正则字符串参数,命名空间模式,View(视图),Request对象,Response对象,JsonResponse对象,Template模板系统
  6. 系统间接口联调总是报500 for URL 和 乱码
  7. windows8系统安装MongoDB 2.6.3配置服务启动
  8. ThinkPHP框架基础知识二
  9. Mysql 慢查询日志配置
  10. Secondary ,Supplementary alignment 和bwa mem的-M -Y参数