spark.read.csv ...读取367个文件,只创建12个分区 - 为什么?

时间:2017-11-17 05:07:40

标签: scala apache-spark amazon-s3

设置:

  • 我正在使用AWS EMR并从S3读取数据以获取表格数据
  • 该表用一个文件夹下的367个文件表示每个文件<64MB (这是S3的默认块大小)

我认为应该发生什么:

当我阅读spark.read.csv时...它应该创建一个包含367个分区的数据帧。但这不会发生!它使用 367个任务按预期阅读然而创建一个只有12个分区的数据框 !!

以下是使用数据框API定义数据框时创建的367个任务:

val y_cdc = spark.read.csv("s3n..........")

enter image description here

这是我的代码,确认创建了12个分区:

y_cdc.rdd.toDebugString

enter image description here

RDD API运行良好:

enter image description here

这是怎么回事?

1 个答案:

答案 0 :(得分:-1)

  • 返回包含此RDD中所有元素的数组。 *
  • @note只有在结果数组要小时才能使用此方法,如
  • 所有数据都被加载到驱动程序的内存中。 从collect定义中,我们可以看到所有数据都将被加载到驱动程序的内存中。所以任务将会减少。