Загружает ли файлы в память переименование файлов S3 в spark? - PullRequest
0 голосов
/ 04 октября 2018

Я задаю этот вопрос, потому что мое переименование S3 файлов, которые я генерирую с помощью spark, происходит медленнее.Я сохраняю свой выходной файл в spark, как показано ниже

val dfMainOutputFinalWithoutNull = dfMainOutputFinal.withColumnRenamed("concatenated", headerFinal)



dfMainOutputFinalWithoutNull.repartition(1).write.partitionBy("DataPartition")
      .format("csv")
      .option("timestampFormat", "yyyy/MM/dd HH:mm:ss ZZ")
      .option("nullValue", "")
      .option("delimiter", "\t")
      .option("quote", "\u0000")
      .option("header", "true")
      .save(outputFileURL)

После сохранения мне нужно переименовать файлы, сохраненные в S3.Вот как я это делаю.

val file = fs.globStatus(new Path(outputFileURL + "/*/*"))
        val finalPrefix = "Fundamental.Fundamental.Fundamental."
        val fileVersion = "1."
        val formatDate = new SimpleDateFormat("yyyy-MM-dd-hhmm")
        val now = Calendar.getInstance().getTime
        val finalFormat = formatDate.format(now)
        val currentTime = finalFormat + "."

        val fileExtention = "Full.txt"

        for (urlStatus <- file) {
          val DataPartitionName = urlStatus.getPath.toString.split("=")(1).split("\\/")(0).toString

          val finalFileName = finalPrefix + DataPartitionName + "." + fileVersion + currentTime + fileExtention
          val dest = new Path(mainFileURL + "/" + finalFileName)
          fs.rename(urlStatus.getPath, dest)
        }
        println("File renamed and moved to dir now delete output folder")
        myUtil.Utility.DeleteOuptuFolder(fs, outputFileURL)

Это переименование файлов занимает более 15 минут.У меня есть около 2k файлов общим размером 200 ГБ.Я что-то здесь не так делаю?

Есть ли способ лучше?

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

В S3 нет концепции переименования.Я бы порекомендовал сохранить в hdfs, а затем сделать s3-distcp, который является более жирным.

0 голосов
/ 04 октября 2018

Это копия в магазине AWS S3, которая обычно измеряется в 6-10 МБ / с.

...