jmv*_*llt 7 partitioning apache-spark apache-spark-sql
包含RDD的元素数量与理想的分区数量之间是否存在任何关系?
我有一个拥有数千个分区的RDD(因为我是从一个由多个小文件组成的源文件加载它,这是一个我无法解决的约束所以我必须处理它).我想重新分区(或使用coalesce方法).但我事先并不知道RDD将包含的确切事件数.
所以我想以自动化的方式做到这一点.看起来像:
val numberOfElements = rdd.count()
val magicNumber = 100000
rdd.coalesce( numberOfElements / magicNumber)
Run Code Online (Sandbox Code Playgroud)
关于RDD的最佳分区数量及其元素数量是否有任何经验法则?
谢谢.
没有,因为它高度依赖于应用程序,资源和数据.有一些硬性限制(如各种2GB限制),但其余的你必须调整任务基础.需要考虑的一些因素:
如果这里的核心问题是一些初始文件,那么使用某些变体CombineFileInputFormat可能比重新分区/合并更好.例如:
sc.hadoopFile(
path,
classOf[CombineTextInputFormat],
classOf[LongWritable], classOf[Text]
).map(_._2.toString)
Run Code Online (Sandbox Code Playgroud)
另请参见如何计算合并的最佳numberOfPartitions?
| 归档时间: |
|
| 查看次数: |
4003 次 |
| 最近记录: |