Spark RDD 多文件输入
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内部可以 ...
随机推荐
- JVM垃圾回收算法
- Unity unsafe
http://answers.unity3d.com/questions/23307/is-it-impossible-to-use-the-code-with-keyword-unsa.html 可 ...
- win32 disk imager使用后u盘容量恢复
XP下进入CMD命令窗体,Vista及7下右键以管理员方式运行DOS窗体 输入DISKPART,会显示计算机名,及DISKPART>命令行 在此状态下输入LIST DISK查看机器磁盘,正常Di ...
- golang笔记——struct
1.定义一个结构体 type User struct { userid int username string password string } 2.初始化一个结构体 有两种情况,一是得到结构体的对 ...
- [Search Engine] 搜索引擎技术之网络爬虫
随着互联网的大力发展,互联网称为信息的主要载体,而如何在互联网中搜集信息是互联网领域面临的一大挑战.网络爬虫技术是什么?其实网络爬虫技术就是指的网络数据的抓取,因为在网络中抓取数据是具有关联性的抓取, ...
- Windows平台下Qt中glut库的使用
用Qt中的QGLWidget窗体类中是不包括glut工具库的,难怪在myGLWidget(在我的程序中是QGLWidget的派生类)中绘制实心球体是说“glutSolidSphere”: 找不到标识符 ...
- Linux cp (复制)命令简介
\cp -rf source1 source2 source3 .... directory cp (复制档案或目录) [root@linux ~]# cp [-adfilprsu] ...
- AJAX工作原理及其优缺点
1.什么是AJAX?AJAX全称为"Asynchronous JavaScript and XML"(异步JavaScript和XML),是一种创建交互式网页应用的网页开发技术.它 ...
- webstrom配置sass与less
1.less 安装一个稳定版的node.[例如node-v4.4.4-x64] 然后直接在webstrom里导入那个lessc.cmd 2.sass 安装ruby. 安装完之后点开,Start那个安装 ...
- tornado 重定向404(方法不对)
application = tornado.web.Application(url_wrapper([ (r"", include('app.views.web_services. ...