Wir verwenden Spark CSV Reader, um die CSV-Datei zu lesen, um sie als DataFrame zu konvertieren, und wir führen den Job unter yarn-client
aus, der im lokalen Modus funktioniert.Textdatei kann nicht vom lokalen Dateipfad gelesen werden - Spark CSV-Reader
Wir senden den Funkenjob in edge node
.
Aber wenn wir die Datei in lokalen Dateipfad statt HDFS platzieren, erhalten wir Datei Ausnahme nicht gefunden.
Code:
sqlContext.read.format("com.databricks.spark.csv")
.option("header", "true").option("inferSchema", "true")
.load("file:/filepath/file.csv")
Wir haben auch versucht file:///
, aber noch sind wir die gleichen Fehler.
Fehlerprotokoll:
2016-12-24 16:05:40,044 WARN [task-result-getter-0] scheduler.TaskSetManager: Lost task 0.0 in stage 0.0 (TID 0, hklvadcnc06.hk.standardchartered.com): java.io.FileNotFoundException: File file:/shared/sample1.csv does not exist
at org.apache.hadoop.fs.RawLocalFileSystem.deprecatedGetFileStatus(RawLocalFileSystem.java:609)
at org.apache.hadoop.fs.RawLocalFileSystem.getFileLinkStatusInternal(RawLocalFileSystem.java:822)
at org.apache.hadoop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.java:599)
at org.apache.hadoop.fs.FilterFileSystem.getFileStatus(FilterFileSystem.java:421)
at org.apache.hadoop.fs.ChecksumFileSystem$ChecksumFSInputChecker.<init>(ChecksumFileSystem.java:140)
at org.apache.hadoop.fs.ChecksumFileSystem.open(ChecksumFileSystem.java:341)
at org.apache.hadoop.fs.FileSystem.open(FileSystem.java:767)
at org.apache.hadoop.mapred.LineRecordReader.<init>(LineRecordReader.java:109)
at org.apache.hadoop.mapred.TextInputFormat.getRecordReader(TextInputFormat.java:67)
at org.apache.spark.rdd.HadoopRDD$$anon$1.<init>(HadoopRDD.scala:241)
at org.apache.spark.rdd.HadoopRDD.compute(HadoopRDD.scala:212)
at org.apache.spark.rdd.HadoopRDD.compute(HadoopRDD.scala:101)
at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:313)
at org.apache.spark.rdd.RDD.iterator(RDD.scala:277)
at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:38)
at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:313)
at org.apache.spark.rdd.RDD.iterator(RDD.scala:277)
at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:38)
at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:313)
at org.apache.spark.rdd.RDD.iterator(RDD.scala:277)
at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:66)
at org.apache.spark.scheduler.Task.run(Task.scala:89)
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:214)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
existiert diese Datei an diesem Ort? – mrsrinivas
@mrsrinivas: ja es ist verfügbar, das ist, warum, wenn ich den Job in Garn-Cluster im lokalen Modus laufen, funktioniert es gut, nur funktioniert es nicht im Garn-Client-Modus. – Shankar
Im Normalfall muss es so funktionieren, wie Sie es versucht haben. Wenn es jedoch beabsichtigt ist, damit es funktioniert, versuchen Sie [SparkFiles] (https://spark.apache.org/docs/1.6.0/api/java/org/apache/spark/SparkFiles.html) Ihren Fall etwas wie dies 'Import org.apache.spark.SparkFiles SparkContext.addFile ("file: /filepath/file.csv") println (SparkFiles.getRootDirectory()) println (SparkFiles.get ("file.csv")) sqlContext.read.format ("com.databricks.spark.csv") .option ("header", "true"). Option ("inferSchema", "true") .load (SparkFiles.get ("file.csv")) ' –