Hi Abhishek,

From your spark-submit it seems your passing the file as a parameter to the driver program. So now it depends what exactly you are doing with that parameter. Using --files option it will be available to all the worker nodes but if in your code if you are referencing using the specified path in distributed mode it wont get the file on the worker nodes.

If you can share the snippet of code it will be easy to debug.

On Friday 23 September 2016 01:03 PM, ABHISHEK wrote:
Hello there,

I have Spark Application which refer to an external file ‘abc.drl’ and having unstructured data. Application is able to find this reference file if I run app in Local mode but in Yarn with Cluster mode, it is not able to find the file in the specified path. I tried with both local and hdfs path with –-files option but it didn’t work.


What is working ?
1.Current Spark Application runs fine if I run it in Local mode as mentioned below.
In below command   file path is local path not HDFS.
spark-submit --master local[*] --class "com.abc.StartMain" abc-0.0.1-SNAPSHOT-jar-with-dependencies.jar /home/abhietc/abc/abc.drl

3.I want to run this Spark application using Yarn with cluster mode.
For that, I used below command but application is not able to find the path for the reference file abc.drl.I tried giving both local and HDFS path but didn’t work.

spark-submit --master yarn --deploy-mode cluster --files /home/abhietc/abc/abc.drl --class com.abc.StartMain abc-0.0.1-SNAPSHOT-jar-with-dependencies.jar /home/abhietc/abc/abc.drl

spark-submit --master yarn --deploy-mode cluster --files hdfs://abhietc.com:8020/user/abhietc/abc.drl <http://abhietc.com:8020/user/abhietc/abc.drl> --class com.abc.StartMain abc-0.0.1-SNAPSHOT-jar-with-dependencies.jar hdfs://abhietc.com:8020/user/abhietc/abc.drl <http://abhietc.com:8020/user/abhietc/abc.drl>

spark-submit --master yarn --deploy-mode cluster --files hdfs://abc.com:8020/tmp/abc.drl <http://abc.com:8020/tmp/abc.drl> --class com.abc.StartMain abc-0.0.1-SNAPSHOT-jar-with-dependencies.jar hdfs://abc.com:8020/tmp/abc.drl <http://abc.com:8020/tmp/abc.drl>


Error Messages:
Surprising we are not doing any Write operation on reference file but still log shows that application is trying to write to file instead reading the file.
Also log shows File not found exception for both HDFS and Local path.
-------------
16/09/20 14:49:50 ERROR scheduler.JobScheduler: Error running job streaming job 1474363176000 ms.0 org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 1.0 failed 4 times, most recent failure: Lost task 0.3 in stage 1.0 (TID 4, abc.com <http://abc.com>): java.lang.RuntimeException: Unable to write Resource: FileResource[file=hdfs:/abc.com:8020/user/abhietc/abc.drl <http://abc.com:8020/user/abhietc/abc.drl>] at org.drools.compiler.kie.builder.impl.KieFileSystemImpl.write(KieFileSystemImpl.java:71) at com.hmrc.taxcalculator.KieSessionFactory$.getNewSession(KieSessionFactory.scala:49) at com.hmrc.taxcalculator.KieSessionFactory$.getKieSession(KieSessionFactory.scala:21) at com.hmrc.taxcalculator.KieSessionFactory$.execute(KieSessionFactory.scala:27) at com.abc.StartMain$$anonfun$main$1$$anonfun$4.apply(TaxCalculatorMain.scala:124) at com.abc.StartMain$$anonfun$main$1$$anonfun$4.apply(TaxCalculatorMain.scala:124) at org.apache.spark.rdd.RDD$$anonfun$mapPartitions$1$$anonfun$apply$20.apply(RDD.scala:710) at org.apache.spark.rdd.RDD$$anonfun$mapPartitions$1$$anonfun$apply$20.apply(RDD.scala:710) at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:38)
        at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:306)
        at org.apache.spark.rdd.RDD.iterator(RDD.scala:270)
at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:38)
        at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:306)
        at org.apache.spark.rdd.RDD.iterator(RDD.scala:270)
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:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.io.FileNotFoundException: hdfs:/abc.com:8020/user/abhietc/abc.drl <http://abc.com:8020/user/abhietc/abc.drl> (No such file or directory)
        at java.io.FileInputStream.open(Native Method)
        at java.io.FileInputStream.<init>(FileInputStream.java:146)
at org.drools.core.io.impl.FileSystemResource.getInputStream(FileSystemResource.java:123) at org.drools.compiler.kie.builder.impl.KieFileSystemImpl.write(KieFileSystemImpl.java:58)
        ... 19 more
--------------
Cheers,
Abhishek




Reply via email to