удалить заголовок из CSV при чтении из TXT или CSV-файла в Spark Scala - PullRequest
0 голосов
/ 04 ноября 2019

Я пытаюсь удалить заголовок из указанного входного файла. Но я не смог этого сделать. Че то я и написал. Может кто-нибудь помочь мне, как удалить заголовки из файла TXT или CSV.

import org.apache.spark.{SparkConf, SparkContext}

object SalesAmount {

  def main(args: Array[String]): Unit = {

    val conf = new SparkConf().setAppName(getClass.getName).setMaster("local")

    val sc = new SparkContext(conf)

    val salesRDD = sc.textFile(args(0),2)

    val salesPairRDD = salesRDD.map(rec => {
      val fieldArr = rec.split(",")
      (fieldArr(1), fieldArr(3).toDouble)
    })

    val totalAmountRDD = salesPairRDD.reduceByKey(_+_).sortBy(_._2,false)



    val discountAmountRDD = totalAmountRDD.map(t => {
      if (t._2 > 1000) (t._1,t._2 * 0.9)
      else t
    })

    discountAmountRDD.foreach(println)


  }

}

1 Ответ

1 голос
/ 04 ноября 2019

Пропуск первой строки при ручном разборе текстовых файлов с использованием RDD API немного сложен:

val salesPairRDD =
  salesRDD
    .mapPartitionsWithIndex((i, it) => if (i == 0) it.drop(1) else it)
    .map(rec => {
      val fieldArr = rec.split(",")
      (fieldArr(1), fieldArr(3).toDouble)
    })

Строка заголовка будет первым элементом в первом разделе, поэтому mapPartitionsWithIndex используется дляпереберите разделы и пропустите первый элемент, если индекс раздела равен 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...