原文地址:http://www.cnblogs.com/029zz010buct/p/4685173.html

-----------------------------------------------------------------------

一般而言,saveAsTextFile会按照执行task的多少生成多少个文件,比如part-00000一直到part-0000n,n自然就是task的个数,亦即是最后的stage的分区数。那么有没有办法最后只生成一个文件,而不是成百上千个文件了?答案自然是有办法。

  在RDD上调用coalesce(1,true).saveAsTextFile(),意味着做完计算之后将数据汇集到一个分区,然后再执行保存的动作,显然,一个分区,Spark自然只起一个task来执行保存的动作,也就只有一个文件产生了。又或者,可以调用repartition(1),它其实是coalesce的一个包装,默认第二个参数为true。

  事情最终就这么简单吗?显然不是。你虽然可以这么做,但代价是巨大的。因为Spark面对的是大量的数据,并且是并行执行的,如果强行要求最后只有一个分区,必然导致大量的磁盘IO和网络IO产生,并且最终执行reduce操作的节点的内存也会承受很大考验。Spark程序会很慢,甚至死掉。

  这往往是初学Spark的一个思维陷阱,需要改变原先那种单线程单节点的思维,对程序的理解要转变多多个节点多个进程中去,需要熟悉多节点集群自然产生多个文件这种模式。

  此外,saveAsTextFile要求保存的目录之前是没有的,否则会报错。所以,最好程序中保存前先判断一下目录是否存在。

-------------

更多的Java,Android,大数据,J2EE,Python,数据库,Linux,Java架构师,教程,视频请访问:

http://www.cnblogs.com/zengmiaogen/p/7083694.html

spark中saveAsTextFile如何最终生成一个文件相关推荐

  1. Shell编程 ——for循环、if语句、sleep睡眠。——每秒钟生成一个文件,一共生成60个文件

    实践: 每秒钟生成一个文件,一共生成60个文件,文件名格式是"20190101_101010.txt".但是,第10.20秒,不生成文件. #!/bin/sh for((i=0;i ...

  2. 1./app/logs/ 里面的日志只保留7天的(apache每天生成一个文件)

    2019独角兽企业重金招聘Python工程师标准>>> 1./app/logs/ 里面的日志只保留7天的(apache每天生成一个文件)  [root@centos6 ~]# vi ...

  3. 使用IO流将数据库中数据生成一个文件,结果使用Notepad++打开部分数据结尾出现NUL...

    场景描述: 项目中通过java代码中从数据库中查询一系列数据,对数据做相应处理,然后通过字符流将数据写如一个新生成的文件中,将该项目部署在linux服务器上,最后生成的文件拿到本地使用notepad+ ...

  4. python中dom模块_Python中使用dom模块生成XML文件示例

    在Python中解析XML文件也有Dom和Sax两种方式,这里先介绍如何是使用Dom解析XML,这一篇文章是Dom生成XML文件,下一篇文章再继续介绍Dom解析XML文件. 在生成XML文件中,我们主 ...

  5. oracle输出xml文件格式,在oracle中通过字段信息生成xml文件

    一般地,在开发xmlp的时候,我们要先用report builder制作rdf模板,然后上传rdf到客户化应用下的reports文件夹下,通过并发请求,输出xml数据,然后保存成xml文件,或者直接将 ...

  6. spark 读取ftp_scala – 使用ftp在Apache Spark中的远程计算机上读取文件

    我正在尝试使用ftp在Apache Spark( Scala版本)中的远程计算机上读取文件.目前,我在 GitHub上关注Databricks的Learning Spark回购中的一个例子.使用cur ...

  7. linux文件下生成一个文件,Linux系统下生成一个指定大小的文件要注意什么?

    在装系统,因此在这里随便记点东西. 从前与经理讨论NVR项目的时候,他提到要预先将用户指定好的磁盘空间预留出来,这是比较容易实现的功能.不容易实现的是自己写一个文件系统,这种方法我是不太敢照量啊,不过 ...

  8. 根据文件夹中的图片数据集生成.txt文件标签

    文章目录 前言 数据集格式 Python实现 注意事项 前言 深度学习中的与图片有关的任务,如图像识别,图像分类,目标检测,图像分割等,在准备图片数据集时,图片的序号和标签往往是由.txt文件获取的. ...

  9. php 二维数组根据键值合并二维数组_php数组根据某键值,把相同键值的合并最终生成一个新的二维数组...

    匿名用户 1级 2013-12-29 回答 php数组根据某一个键值,把相同键值的合并生成一个新的二维数组 源数据: $infos = array( array( 'a' => 36, 'b' ...

最新文章

  1. ADO.NET——二级联动 +ajax
  2. Hive学习笔记 —— Hive的管理
  3. html js页面传参
  4. 如果人民币贬值,对股市会有什么影响?
  5. Ant Design Pro v4 is Here
  6. mysql 获取递增id_如何在MySQL中获取下一个自动递增ID?
  7. 如何使用VS2019编译QT项目
  8. 天气暖和了,我却感冒了
  9. 关于Mac下mysql8.0的启动
  10. Spotlight监控Oracle--Spotlight On Oracle安装和使用
  11. matlab自定义颜色代码,自定义颜色为matlab表面图
  12. 嘉腾发布“守护者I”抗疫机器人
  13. python 豆瓣源安装_python pip使用豆瓣源技巧和pip配置文件更改豆瓣源
  14. 推荐系统遇上深度学习(十二)--推荐系统中的EE问题及基本Bandit算法
  15. qcqa是什么职位_QA和QC是什么意思?区别是什么?
  16. 【寒假每日一题】剪绳子(个人练习)详细题解+推导证明(第六天)
  17. 3-2-1 程序控制结构-while循环结构-多次求解一元二次方程?-while循环常见错误?
  18. 西门子PLC编程软件,最新版本是TIA STEP7 V16,功能更加强大
  19. 计算机网络常见面试题整理
  20. 电力行业服务器加固系统,系统加固

热门文章

  1. c 插件读取有属性的html6,廖雪峰的JS教程6-jQuery
  2. php 复选框全选和取消,基于JavaScript实现复选框的全选和取消全选
  3. Springboot源码——应用程序上下文分析
  4. java接口方法实现_Java接口的简单定义与实现方法示例
  5. 零基础mysql项目实例_MySQL-零基础开发
  6. 华为畅享max有没有人脸识别_华为畅享7s有人脸识别吗 让我来告诉你
  7. 小程序向webview传参_独家 | 支付宝小程序向个人开发者开放公测
  8. linux下进程监控6,Linux进程监控技术—精通软件性能测试与LoadRunner最佳实战(6)...
  9. 计算机公式or,【转载】 odds、OR和RR的计算公式和实际意义
  10. php二进制保存到本地,C# 将二进制字符串保存到本地