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

spark\u4e2dsaveAsTextFile\u5982\u4f55\u6700\u7ec8\u751f\u6210\u4e00\u4e2a\u6587\u4ef6

spark\u4e2dsaveAsTextFile\u5982\u4f55\u6700\u7ec8\u751f\u6210\u4e00\u4e2a\u6587\u4ef6














\u3000\u3000\u4e00\u822c\u800c\u8a00\uff0csaveAsTextFile\u4f1a\u6309\u7167\u6267\u884ctask\u7684\u591a\u5c11\u751f\u6210\u591a\u5c11\u4e2a\u6587\u4ef6\uff0c\u6bd4\u5982part-00\u4e00\u76f4\u5230part-0n\uff0cn\u81ea\u7136\u5c31\u662ftask\u7684\u4e2a\u6570\uff0c\u4ea6\u5373\u662f\u6700\u540e\u7684stage\u7684\u5206\u533a\u6570\u3002\u90a3\u4e48\u6709\u6ca1\u6709\u529e\u6cd5\u6700\u540e\u53ea\u751f\u6210\u4e00\u4e2a\u6587\u4ef6\uff0c\u800c\u4e0d\u662f\u6210\u767e\u4e0a\u5343\u4e2a\u6587\u4ef6\u4e86\uff1f\u7b54\u6848\u81ea\u7136\u662f\u6709\u529e\u6cd5\u3002

\u3000\u3000\u5728RDD\u4e0a\u8c03\u7528coalesce(1,true).saveAsTextFile()\uff0c\u610f\u5473\u7740\u505a\u5b8c\u8ba1\u7b97\u4e4b\u540e\u5c06\u6570\u636e\u6c47\u96c6\u5230\u4e00\u4e2a\u5206\u533a\uff0c\u7136\u540e\u518d\u6267\u884c\u4fdd\u5b58\u7684\u52a8\u4f5c\uff0c\u663e\u7136\uff0c\u4e00\u4e2a\u5206\u533a\uff0cSpark\u81ea\u7136\u53ea\u8d77\u4e00\u4e2atask\u6765\u6267\u884c\u4fdd\u5b58\u7684\u52a8\u4f5c\uff0c\u4e5f\u5c31\u53ea\u6709\u4e00\u4e2a\u6587\u4ef6\u4ea7\u751f\u4e86\u3002\u53c8\u6216\u8005\uff0c\u53ef\u4ee5\u8c03\u7528repartition(1)\uff0c\u5b83\u5176\u5b9e\u662fcoalesce\u7684\u4e00\u4e2a\u5305\u88c5\uff0c\u9ed8\u8ba4\u7b2c\u4e8c\u4e2a\u53c2\u6570\u4e3atrue\u3002

\u3000\u3000\u4e8b\u60c5\u6700\u7ec8\u5c31\u8fd9\u4e48\u7b80\u5355\u5417\uff1f\u663e\u7136\u4e0d\u662f\u3002\u4f60\u867d\u7136\u53ef\u4ee5\u8fd9\u4e48\u505a\uff0c\u4f46\u4ee3\u4ef7\u662f\u5de8\u5927\u7684\u3002\u56e0\u4e3aSpark\u9762\u5bf9\u7684\u662f\u5927\u91cf\u7684\u6570\u636e\uff0c\u5e76\u4e14\u662f\u5e76\u884c\u6267\u884c\u7684\uff0c\u5982\u679c\u5f3a\u884c\u8981\u6c42\u6700\u540e
\u53ea\u6709\u4e00\u4e2a\u5206\u533a\uff0c\u5fc5\u7136\u5bfc\u81f4\u5927\u91cf\u7684\u78c1\u76d8IO\u548c\u7f51\u7edcIO\u4ea7\u751f\uff0c\u5e76\u4e14\u6700\u7ec8\u6267\u884creduce\u64cd\u4f5c\u7684\u8282\u70b9\u7684\u5185\u5b58\u4e5f\u4f1a\u627f\u53d7\u5f88\u5927\u8003\u9a8c\u3002Spark\u7a0b\u5e8f\u4f1a\u5f88\u6162\uff0c\u751a\u81f3\u6b7b\u6389\u3002

\u3000\u3000\u8fd9\u5f80\u5f80\u662f\u521d\u5b66Spark\u7684\u4e00\u4e2a\u601d\u7ef4\u9677\u9631\uff0c\u9700\u8981\u6539\u53d8\u539f\u5148\u90a3\u79cd\u5355\u7ebf\u7a0b\u5355\u8282\u70b9\u7684\u601d\u7ef4\uff0c\u5bf9\u7a0b\u5e8f\u7684\u7406\u89e3\u8981\u8f6c\u53d8\u591a\u591a\u4e2a\u8282\u70b9\u591a\u4e2a\u8fdb\u7a0b\u4e2d\u53bb\uff0c\u9700\u8981\u719f\u6089\u591a\u8282\u70b9\u96c6\u7fa4\u81ea\u7136\u4ea7\u751f\u591a\u4e2a\u6587\u4ef6\u8fd9\u79cd\u6a21\u5f0f\u3002

\u3000\u3000\u6b64\u5916\uff0csaveAsTextFile\u8981\u6c42\u4fdd\u5b58\u7684\u76ee\u5f55\u4e4b\u524d\u662f\u6ca1\u6709\u7684\uff0c\u5426\u5219\u4f1a\u62a5\u9519\u3002\u6240\u4ee5\uff0c\u6700\u597d\u7a0b\u5e8f\u4e2d\u4fdd\u5b58\u524d\u5148\u5224\u65ad\u4e00\u4e0b\u76ee\u5f55\u662f\u5426\u5b58\u5728\u3002

spark\u4e2dsaveAsTextFile\u5982\u4f55\u6700\u7ec8\u751f\u6210\u4e00\u4e2a\u6587\u4ef6 \u4e00\u822c\u800c\u8a00\uff0csaveAsTextFile\u4f1a\u6309\u7167\u6267\u884ctask\u7684\u591a\u5c11\u751f\u6210\u591a\u5c11\u4e2a\u6587\u4ef6\uff0c\u6bd4\u5982part-00\u4e00\u76f4\u5230part-0n\uff0cn\u81ea\u7136\u5c31\u662ftask\u7684\u4e2a\u6570\uff0c\u4ea6\u5373\u662f\u6700\u540e\u7684stage\u7684\u5206\u533a\u6570\u3002\u90a3\u4e48\u6709\u6ca1\u6709\u529e\u6cd5\u6700\u540e\u53ea\u751f\u6210\u4e00\u4e2a\u6587\u4ef6\uff0c\u800c\u4e0d\u662f\u6210\u767e\u4e0a\u5343\u4e2a

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

  一般而言,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中saveAsTextFile尝梗佰妓脂幻拌潍饱璃如何最终生成一个文件

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

扩展阅读:spank处罚视频 ... 外国spark实践网站视频 ... www.sony.com.cn ... support.apple.com ... spanking姜罚writeas ... 免费sp视频素材 ... 重度speaking外网免费 ... sp.zxxk.com ... 曼陀庄园spanking ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网