J'ai un fichier d'entrée qui est délimité par des valeurs personnalisées et est passé à newAPIHadoopFile pour être converti en RDD [String]. Le fichier réside sous le répertoire de ressources du projet. Le code suivant fonctionne bien lorsqu'il est exécuté à partir de l'IDE Eclipse.Lecture du fichier d'entrée depuis le fichier jar lors de l'exécution de l'application à partir de spark-submit
val path = this.getClass()
.getClassLoader()
.getResource(fileName)
.toURI().toString()
val conf = new org.apache.hadoop.conf.Configuration()
conf.set("textinputformat.record.delimiter", recordDelimiter)
return sc.newAPIHadoopFile(
path,
classOf[org.apache.hadoop.mapreduce.lib.input.TextInputFormat],
classOf[org.apache.hadoop.io.LongWritable],
classOf[org.apache.hadoop.io.Text],
conf)
.map(_._2.toString)
Cependant quand je lance sur étincelle soumettre (avec un pot de uber) comme suit
spark-submit /Users/anon/Documents/myUber.jar
Je reçois l'erreur ci-dessous.
Exception in thread "main" java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: jar:file:/Users/anon/Documents/myUber.jar!/myhome-data.json
Toutes les entrées s'il vous plaît?
J'ai essayé cela mais le fichier sc.newAPIHadoopFile nécessite un chemin d'accès et non un flux d'entrée – user1384205
Réponse mise à jour ... faites-moi savoir comment cela fonctionne. –