部分文章内容为公开资料查询整理,原文出处可能未标注,如有侵权,请联系我,谢谢。邮箱地址:gnivor@163.com ►►►需要气球么?请点击我吧!

Spark保存到HDFS或本地文件相关问题

spark中saveAsTextFile如何最终生成一个文件

http://www.lxway.com/641062624.htm

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

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

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

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

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

 

Spark与HDFS怎么加载本地文件

http://bbs.csdn.net/topics/390976410

spark默认是从hdfs读取文件,也可以指定sc.textFile("路径").在路径前面加上hdfs://表示从hdfs文件系统上读
本地文件读取 sc.textFile("路径").在路径前面加上file:// 表示从本地文件系统读,如file:///home/user/spark/README.md

 

Spark Streaming 保存日志文件到HDFS或本地没有反应。(使用本地模式)

http://stackoverflow.com/questions/28050262/spark-streaming-network-wordcount-py-does-not-print-result

原因
提交应用时用该使用更多的executors,如

spark-submit --master local[4] your_file.py

Learning Spark 第十章:

在本地运行Spark Streaming程序时,master的参数不要设置为local或者local[1],只为任务分配一个CPU,如果某个receiver在上面运行,就没有剩余资源来执行接受数据的过程。因此至少使用local[2]来保证更多的CPU核

 

saveAsTextFile源码:http://www.myexception.cn/other/1961287.html
怎样利用Spark Streaming和Hadoop实现近实时的会话连接 http://m.thebigdata.cn/show.aspx?articleid=14069fo
KAFKA sparkStreaming HBase  http://www.aboutyun.com/thread-12123-1-1.html

 

posted @ 2015-11-26 19:58  流了个火  阅读(20409)  评论(1编辑  收藏  举报
►►►需要气球么?请点击我吧!►►►
View My Stats