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