在Spark中读取文件时的分区数据

问题描述 投票:0回答:1

我是Spark的新手。考虑以下代码:

val rdd = sc
  .objectFile[(Int, Int)]("path")
  .partitionBy(new HashPartitioner(sc.defaultParallelism))
  .persist()
rdd.count()

每个从文件读取的元组是否直接发送到哈希分区程序指定的分区?还是首先将整个文件读入内存而不考虑分区程序,然后根据分区程序进行分配。对我来说,前者可能会更高效,因为数据被随机洗了一次,而后者则需要两次洗牌。

apache-spark shuffle
1个回答
0
投票

请在代码中找到注释

val rdd = sc
  .objectFile[(Int, Int)]("path") // Loads the whole file with default minimum partitions and default partitioner
  .partitionBy(new HashPartitioner(sc.defaultParallelism)) // Re-partitions the RDD using HashPartitioner
  .persist() 
© www.soinside.com 2019 - 2024. All rights reserved.