首页 > 解决方案 > 遍历数据框的列和分区,并在分区列的基础上保存数据框

问题描述

我对 scala 非常陌生,我有一个 csv 文件:

MSH     ModZId  ModProd     Date
1140000 zzz      abc    2/19/2018
1140000 zzz      abc    2/19/2018
651     zzz      abc    2/19/2018
651     zzz      abc    2/19/2018
1140000 zzz      abc    2/19/2018
860000  zzz      mno    2/26/2018
860000  zzz      mno    2/26/2018
122     zzz      mno    2/26/2018
122     zzz      mno    2/26/2018
860000  zzz      mno    2/26/2018
1140000 zzz      pxy    2/19/2018
1140000 zzz      pxy    2/19/2018

我需要根据日期对 csv 文件进行分区并将分区转换为镶木地板,如下所示:

文件夹名称 2018/02/19

 and parquet file1 output 

MSH     ModZId  ModProd  Date
1140000 zzz     abc     2/19/2018
1140000 zzz     xyz     2/19/2018
651     zzz     def     2/19/2018
651     zzz     ghi     2/19/2018
1140000 zzz     klm     2/19/2018

parquet file2 Output
 MSH     ModZId  ModProd  Date
1140000 zzz      pxy    2/19/2018
1140000 zzz      pxy    2/19/2018

文件夹名称 20180226

MSH     ModZId  ModProd  Date
860000  zzz     mno     2/26/2018
860000  zzz     pqr     2/26/2018
122     zzz     stu     2/26/2018
122     zzz     wxy     2/26/2018
860000  zzz     ijk     2/26/2018

我正在尝试这个,但不确定如何迭代数据框

 val writeDF = df
        .select ($"ModProd  ",$"Date").distinct().orderBy($"ModProd  ",$"Date")

    writeDF.show()

    df
      .write
      .mode(SaveMode.Overwrite)
      .format("parquet")
      .partitionBy("Date")
      .save(Path)

}

谁能帮帮我。我很新,不知道如何根据日期在scala中对csv文件进行分区

标签: scaladataframeapache-spark

解决方案


推荐阅读