Wie man mit Spark @ schnell eine Datei aus HDFS in map () lie

Ich muss in jeder Map eine andere Datei lesen (), die Datei ist in HDFS

  val rdd=sc.parallelize(1 to 10000)
  val rdd2=rdd.map{x=>
    val hdfs = org.apache.hadoop.fs.FileSystem.get(new java.net.URI("hdfs://ITS-Hadoop10:9000/"), new org.apache.hadoop.conf.Configuration())
    val path=new Path("/user/zhc/"+x+"/")
    val t=hdfs.listStatus(path)
    val in =hdfs.open(t(0).getPath)
    val reader = new BufferedReader(new InputStreamReader(in))
    var l=reader.readLine()
  }
 rdd2.count

Mein Problem ist dieser Code

val hdfs = org.apache.hadoop.fs.FileSystem.get(new java.net.URI("hdfs://ITS-Hadoop10:9000/"), new org.apache.hadoop.conf.Configuration())

nimmt zu viel Laufzeit in Anspruch, jedes Mal, wenn map () einen neuen FileSystem-Wert erstellt. Kann ich diesen Code außerhalb der Funktion map () platzieren, damit er nicht jedes Mal hdfs erstellen muss? Oder wie kann ich Dateien in map () schnell lesen?

Mein Code läuft auf mehreren Rechnern. Vielen Dank

Antworten auf die Frage(2)

Ihre Antwort auf die Frage