Nous utilisons le lecteur Spark CSV pour lire le fichier CSV à convertir en tant que DataFrame et nous exécutons le travail sur yarn-client
, qui fonctionne correctement en mode local.Impossible de lire le fichier texte à partir du chemin d'accès local - Lecteur Spark CSV
Nous soumettons le travail d'allumage dans edge node
. Mais quand nous plaçons le fichier dans le chemin du fichier local au lieu de HDFS, nous obtenons l'exception de fichier non trouvé.
code:
sqlContext.read.format("com.databricks.spark.csv")
.option("header", "true").option("inferSchema", "true")
.load("file:/filepath/file.csv")
Nous avons aussi essayé file:///
, mais nous obtenons la même erreur.
journal d'erreur:
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)
ce fichier existe-t-il à cet emplacement? – mrsrinivas
@mrsrinivas: oui c'est disponible, c'est pourquoi quand je cours le travail dans le cluster de fils en mode local, il fonctionne bien, seulement il ne fonctionne pas en mode filaire-client. – Shankar
En temps normal, il doit fonctionner comme vous l'avez essayé. Cependant, si l'intention est de le faire fonctionner, essayez [SparkFiles] (https://spark.apache.org/docs/1.6.0/api/java/org/apache/spark/SparkFiles.html) votre cas quelque chose comme celui-ci 'org.apache.spark.SparkFiles d'importation SparkContext.addFile ("file: /filepath/file.csv") println (SparkFiles.getRootDirectory()) println (SparkFiles.get ("file.csv")) sqlContext.read.format ("com.databricks.spark.csv") .option ("en-tête", "true"). Option ("inferSchema", "true") .load (SparkFiles.get ("file.csv")) ' –