首页 > 解决方案 > Spark 在分区内创建额外的分区

问题描述

我有一个 Spark 程序,它从文本文件中读取数据作为 RDD,并使用 spark-sql 转换为 Parquet 文件,并使用单个分区键进行分区。有时,它不会创建一个分区,而是创建两个分区,即分区内的一个分区。

我的数据按日期分区,输出文件夹位于 s3://datalake/intk/parquetdata 中。

运行 Spark 作业后,我看到的输出为:

s3://datalake/intk/parquetdata/datekey=102018/a.parquet
s3://datalake/intk/parquetdata/datekey=102118/a.parquet
s3://datalake/intk/parquetdata/datekey=102218/datekey=102218/a.parquet

代码片段:

val savepath = "s3://datalake/intk/parquetdata/"
val writeDF = InputDF.write
  .mode(savemode)
  .partitionBy(partitionKey)
  .parquet(savePath)

我在 EMR 集群版本 5.16、Spark 版本 2.2、Scala 版本 2.11 中运行我的 Spark 作业,输出位置是 s3。我不确定为什么会发生这种行为,并且我没有看到这个问题遵循任何模式,并且这个分区仅偶尔发生一次。

标签: apache-sparkamazon-s3amazon-emr

解决方案


推荐阅读