zipwithindex для Rdd Key и получите новый RDD - PullRequest
1 голос
/ 18 мая 2019

Я создаю rdd с wholeTextfiles.Я получаю filepath и filetext.Я хочу новый RDD с filepath и индексом от zipWithIndex

Я пробовал карту, но безуспешно.

1 Ответ

1 голос
/ 19 мая 2019

Во-первых, нужно ли это вообще? теоретически мы можем сделать ... но какова необходимость делать это как требование. ты можешь написать простая программа hdfs для поиска имени файла и индекса .. я имею ввиду spark rdd больше не нужно отображать имена файлов. с индексом.


У меня есть файлы ниже.

sample parquet files here

Сейчас я делаю трансформацию, как показано ниже ...

import org.apache.log4j.{Level, Logger}
import org.apache.spark.internal.Logging
import org.apache.spark.sql.SparkSession

/** *
  * @author : Ram Ghadiyaram
  */
object WholeTextFiles extends Logging {
  Logger.getLogger("org").setLevel(Level.WARN)

  def main(args: Array[String]): Unit = {
    val appName = if (args.length > 0) args(0) else this.getClass.getName
    val spark: SparkSession = SparkSession.builder
      .config("spark.master", "local[*]") //.config("spark.eventLog.enabled", "true")
      .appName(appName)
      .getOrCreate()

// map transformation to form new rdd
    val finalresult = spark.sparkContext.wholeTextFiles("C:\\Users\\Downloads\\codebase\\spark-general-examples\\userdata*.parquet")
    .zipWithIndex().map {
      case (x, index) => (index, x._1)
    }

    println("  print the small rdd this is your tranformed RDD ")

     finalresult.sortByKey(true) foreach {
      case (index,x ) => println(s"\n Index $index file name  ${x}  ")
    }
    println("done")
  }
}

Результат:

  print the small rdd this is your tranformed RDD 

 Index 0 file name  file:/C:/Users/Downloads/codebase/spark-general-examples/userdata1.parquet  

 Index 3 file name  file:/C:/Users/Downloads/codebase/spark-general-examples/userdata4.parquet  

 Index 1 file name  file:/C:/Users/Downloads/codebase/spark-general-examples/userdata2.parquet  

 Index 4 file name  file:/C:/Users/Downloads/codebase/spark-general-examples/userdata5.parquet  

 Index 2 file name  file:/C:/Users/Downloads/codebase/spark-general-examples/userdata3.parquet  
done
...