入力ファイルがカスタムで区切られ、RDD [String]として変換するためにnewAPIHadoopFileに渡されます。ファイルはプロジェクトリソースディレクトリの下にあります。次のコードは、Eclipse IDEから実行するとうまく動作します。spark-submitからアプリケーションを実行しているときにjarから入力ファイルを読み込みます。
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)
しかし
spark-submit /Users/anon/Documents/myUber.jar
私は以下のエラーを取得し、次のように私は(ユーバージャーで)提出火花でそれを実行したとき。
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
入力してください。
私はこれを試しましたが、sc.newAPIHadoopFileにはパスが必要であり、入力ストリームではありません – user1384205
答えが更新されました...どのように機能するか教えてください。 –