Non*_*one 5 hadoop apache-spark
我有成千上万个压缩文件,每个大小为2GB,位于HDFS中.我正在使用spark来处理这些文件.我使用Spark textFile()方法从HDFS加载文件.我的问题是如何重新分区数据,以便我可以并行处理每个文件.目前,每个.gz文件都在一个任务中处理.因此,如果我处理1000个文件,则只执行1000个任务.据我所知,压缩文件不可拆分.但是,还有其他方法可以用来更快地完成我的工作吗?
rdd.repartition(#partitions)加载文件后即可使用。这具有相关的洗牌成本,因此您需要评估并行化中的性能增益是否覆盖了该初始洗牌成本。
另一种方法是在初始分区上执行任何转换(映射、过滤器等),并使用管道中已有的任何洗牌阶段来重新分区 RDD。例如
rdd.map().filter().flatMap().sortBy(f, numPartitions=new#ofpartitions)
Run Code Online (Sandbox Code Playgroud)