繁体   English   中英

将RDD拆分为多个RDDS

[英]Split an RDD into multiple RDDS

我有一对RDD [String,String],其中key是一个字符串,值是html。 我想根据n个密钥将此rdd拆分为n个RDDS,并将其存储在HDFS中。

htmlRDD = [key1,html
           key2,html
           key3,html
           key4,html
           ........] 

根据密钥拆分此RDD,并将每个RDD中的html分别存储在HDFS上。 为什么我要这样做? 当我尝试将HTML从主RDD存储到HDFS时,这会花费大量时间,因为某些任务会被输出协调器拒绝提交。 我正在Scala中进行此操作。

 htmlRDD.saveAsHadoopFile("hdfs:///Path/",classOf[String],classOf[String], classOf[Formatter])

您也可以尝试使用以下方法来代替RDD:

htmlRDD.saveAsTextFile("hdfs://HOST:PORT/path/");

我尝试了这个,对我有用。 我有RDD [JSONObject],它很好地写了JSON Object的toString()。

Spark将每个RDD分区保存到1个hdfs文件分区中。 因此,要实现良好的并行性,您的源RDD应该具有许多分区(实际上取决于整个数据的大小)。 因此,我认为您不希望将RDD拆分为多个RDD,而是要使RDD具有许多分区。 您可以使用repartition()或coallesce()来实现

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM