1.将多个文本文件读入一个RDD中
SparkConf conf=new SparkConf()
.setMaster("local")
.setAppName("save");
JavaSparkContext sc=new JavaSparkContext(conf); JavaRDD<String> lines=sc.textFile("student*");
lines.foreach(new VoidFunction<String>(){ @Override
public void call(String arg0) throws Exception {
// TODO Auto-generated method stub
System.out.println(args); } }); }
textFile的参数可以支持通配符哦!!!很强大吧。事实上,这个东西确实很强大:
public RDD<java.lang.String> textFile(java.lang.String path,
int minPartitions)
Read a text file from HDFS, a local file system (available on all nodes), or any Hadoop-supported file system URI, and return it as an RDD of Strings.
他可以从hdfs中读取数据,可以从本地文件系统读取数据(之不多此时要求所有节点都要有这个文件),或者任何hadoop支持的文件系统。
2.将一个RDD保存到文件中。
SparkConf conf=new SparkConf()
.setMaster("local")
.setAppName("save");
JavaSparkContext sc=new JavaSparkContext(conf); JavaRDD<String> lines=sc.textFile("student*");
//保存到hdfs
lines.saveAsTextFile("hdfs://spark2:9000/francis/spark-core/studentsRDD.txt");
ok,让我们查看一下hdfs上的文件吧:
hadoop fs -ls -h /francis/spark-core/studentsRDD.txt/
内容如下:
Found 4 items
-rw-r--r-- 3 francis supergroup 0 2016-03-10 18:58 /francis/spark-core/studentsRDD.txt/_SUCCESS
-rw-r--r-- 3 francis supergroup 38 2016-03-10 18:58 /francis/spark-core/studentsRDD.txt/part-00000
-rw-r--r-- 3 francis supergroup 38 2016-03-10 18:58 /francis/spark-core/studentsRDD.txt/part-00001
-rw-r--r-- 3 francis supergroup 38 2016-03-10 18:58 /francis/spark-core/studentsRDD.txt/part-00002
可以发现,每一个partition保存到一个文件中去了。
注意:在windows eclipse中调用saveAsTextFile时,如果将数据保存到window本地文件,会出现错误!!!!!
想要测试这种情况,还是去linux吧。
调用saveAsTextFile将数据保存到外部文件系统中了,那么如何在将他们到RDD中呢?只需要调用textFile并传入当时保存的那个文件名就ok了。
3.将RDD保存到一个文件中
上面看到了,每一个partition会被保存到要给单独的文件中去。如何让所有partition都保存到一个文件中呢?可以考虑如下两种思路:
第一种方法,对rdd调用collect(),此时返回的是要给array,然后将array保存到文件中。
第二张方法,并不推荐,他可能会极大的降低性能:先调用coalesce(1),然后再saveAsTextFile。
是否真的需要保存到一个文件中?这个需要仔细商榷,如果数据量比较大,保存到一个文件的性能会大大降低。
作者:FrancisWang
邮箱:franciswbs@163.com
出处:http://www.cnblogs.com/francisYoung/
本文地址:http://www.cnblogs.com/francisYoung/p/5263179.html
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
Spark RDD 多文件输入的更多相关文章
-
Spark RDD/Core 编程 API入门系列之动手实战和调试Spark文件操作、动手实战操作搜狗日志文件、搜狗日志文件深入实战(二)
1.动手实战和调试Spark文件操作 这里,我以指定executor-memory参数的方式,启动spark-shell. 启动hadoop集群 spark@SparkSingleNode:/usr/ ...
-
Spark RDD API详解(一) Map和Reduce
RDD是什么? RDD是Spark中的抽象数据结构类型,任何数据在Spark中都被表示为RDD.从编程的角度来看,RDD可以简单看成是一个数组.和普通数组的区别是,RDD中的数据是分区存储的,这样不同 ...
-
Spark RDD Operations(1)
以上是对应的RDD的各中操作,相对于MaoReduce只有map.reduce两种操作,Spark针对RDD的操作则比较多 ************************************** ...
-
Spark RDD操作(1)
https://www.zybuluo.com/jewes/note/35032 RDD是什么? RDD是Spark中的抽象数据结构类型,任何数据在Spark中都被表示为RDD.从编程的角度来看,RD ...
-
Spark RDD API具体解释(一) Map和Reduce
本文由cmd markdown编辑.原始链接:https://www.zybuluo.com/jewes/note/35032 RDD是什么? RDD是Spark中的抽象数据结构类型,不论什么数据在S ...
-
Apache Spark 2.2.0 中文文档 - Spark RDD(Resilient Distributed Datasets)论文 | ApacheCN
Spark RDD(Resilient Distributed Datasets)论文 概要 1: 介绍 2: Resilient Distributed Datasets(RDDs) 2.1 RDD ...
-
Apache Spark RDD(Resilient Distributed Datasets)论文
Spark RDD(Resilient Distributed Datasets)论文 概要 1: 介绍 2: Resilient Distributed Datasets(RDDs) 2.1 RDD ...
-
Spark RDD 操作
1. Spark RDD 创建操作 1.1 数据集合 parallelize 可以创建一个能够并行操作的RDD.其函数定义如下: ) scala> sc.defaultParallelism ...
-
Spark RDD、DataFrame原理及操作详解
RDD是什么? RDD (resilientdistributed dataset),指的是一个只读的,可分区的分布式数据集,这个数据集的全部或部分可以缓存在内存中,在多次计算间重用. RDD内部可以 ...
随机推荐
-
双系统 fedora 恢复引导
因为硬盘坏了,所以买了个固态的用用. 先装windows,再装fedora及常用必备的驱动软件装上. 快要完成了心情都挺好,可是在一次关机时window7关机很慢一直在删索引,我嫌时间太长,直接按电源 ...
-
ZOJ 1041 Transmitters
原题链接 题目大意:有一个发射站,覆盖范围是半径一定的一个半圆.在一个1000*1000平方米的地盘里有很多接收站.给定发射站的圆心,求最佳角度时能覆盖接收站的个数. 解法:本质上就是给一个原点和其他 ...
-
提升资源利用率的MapReduce框架
Hadoop系统提供了MapReduce计算框架的开源实现,像Yahoo!.Facebook.淘宝.中移动.百度.腾讯等公司都在借助 Hadoop进行海量数据处理.Hadoop系统性能不仅取决于任务调 ...
-
poj1436 Horizontally Visible Segments
这是一个区间更新的题目,先将区间放大两倍,至于为什么要放大可以这样解释,按照从左到右有4个区间,y值是[1,5],[1,2],[3,4],[1,4]如果不放大的话,查询[1,4]区间和前面区间的”可见 ...
-
mysql 开发基础系列6 数值与日期函数
一. 数值函数 1. abs(x) 返回x的绝对值 SELECT ABS(-0.8),ABS(0.8); 2.ceil(x) 返回大于x的最大整数 SELECT CEIL(-0.8),CEIL(0. ...
-
wcf事务
wcf服务 using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serial ...
-
vue 设置button disabled
<button v-bind:disabled="dis" @click="alert">button</button> dis:'' ...
-
使用WindowsAPI获取录音音频
本文实例介绍了使用winmm.h进行音频流的获取的方法,具体步骤如下: 一.首先需要包含以下引用对象 ? 1 2 3 #include <Windows.h> #include " ...
-
Python文件操作:同一个文件进行内容替换
在原文件上进行部分内容的替换,主要用到seek()函数和truncate()函数实现,直接上代码: ) # 将指针位置指到文件开头(注意:一定要有这步操作,不然无法清空文件)f1.truncate() ...
-
【MYSQL笔记3】MYSQL过程式数据库对象之存储过程的调用、删除和修改
mysql从5.0版本开始支持存储过程.存储函数.触发器和事件功能的实现. 我们以一本书中的例题为例:创建xscj数据库的存储过程,判断两个输入的参数哪个更大.并调用该存储过程. (1)调用 首先,创 ...