【发布时间】:2017-02-17 14:09:59
【问题描述】:
我很难理解 RDD 分区和 HDFS 输入拆分之间的区别。所以基本上当你提交一个 Spark 应用程序时:
当 Spark 应用程序想要从 HDFS 读取数据时,HDFS 上的该文件将具有输入拆分(假设每个拆分为 64 mb,并且这些输入拆分中的每一个都存在于不同的数据节点上)。
现在假设 Spark 应用程序想要使用 (sc.textFile(PATH_IN_HDFS)) 从 HDFS 加载该文件。该文件约为 256 mb,有 4 个输入拆分,其中 2 个拆分位于数据节点 1 上,另外 2 个拆分位于数据节点 2 上。
现在,当 Spark 将这 256 mb 加载到它的 RDD 抽象中时,它会将每个输入拆分 (64mb) 加载到 4 个单独的 RDD 中(您将在数据节点 1 中拥有 2 个具有 64mb 数据的 RDD 和另外两个 RDD数据节点 2) 上的 64mb 数据。或者 RDD 会在 Hadoop 上进一步划分这些输入拆分吗?那么这些分区将如何重新分配呢? 我不明白RDD分区和HDFS输入拆分之间是否存在关联?
【问题讨论】:
标签: hadoop apache-spark hdfs