我有一个大文本文件(3 GB),它是DNA参考。我想将它分成几部分,以便我能够处理它。
所以我想知道如何使用Spark切片文件。我目前只有一个节点有4 GB的内存
答案 0 :(得分:1)
听起来好像要将文件作为多个分区加载。如果您的文件是可拆分的(文本文件,snappy,序列等),您可以简单地提供加载它的分区数sc.textFile(inputPath, numPartitions)
。如果您的文件不可拆分,它将作为一个分区加载,但您可以在加载的RDD上调用.repartition(numPartitions)
以重新分区为多个分区。
答案 1 :(得分:0)
如果您希望每个块中都有特定数量的行,则可以尝试以下操作:
rdd=sc.textFile(inputPath).zipWithIndex()
rdd2=rdd.filter(x=>lowest_no_of_line<=x._2 & x._2<=highest_no_of_line).map(x=>x._1).coalesce(1,false)
rdd2.saveAsTextFile(outputpath)
现在,您保存的文本文件将在highest_no_of_line
和lowest_no_of_line
之间有行