【问题标题】:Spark Pipe function throws No such file or directorySpark Pipe函数抛出没有这样的文件或目录
【发布时间】:2018-03-24 05:56:11
【问题描述】:

我在 REPL 的 EMR 主服务器上运行火花管功能只是为了测试管道功能。我正在使用以下示例

https://stackoverflow.com/a/32978183/8876462
http://blog.madhukaraphatak.com/pipe-in-spark/
http://hadoop-makeitsimple.blogspot.com/2016/05/pipe-in-spark.html

这是我的代码::

import org.apache.spark._
val distScript = "/home/hadoop/PipeEx.sh"
val distScriptName = "PipeEx.sh"
sc.addFile(distScript)
val ipData = 
sc.parallelize(List("asd","xyz","zxcz","sdfsfd","Ssdfd","Sdfsf"))
val opData = ipData.pipe(SparkFiles.get(distScriptName))
opData.foreach(println)

我尝试了不同的方法,例如使文件可执行,按照另一篇文章中的建议放置在 /usr/lib/spark/bin 中的文件中。我把 distScript 改成说

"file:///home/hadoop/PipeEx.sh"

我总是在tmp/spark*/userFiles* 位置找不到这样的文件或目录。我试图从 tmp 位置访问和运行 shell 程序,它运行良好。 我的shell脚本和http://blog.madhukaraphatak.com/pipe-in-spark/一样

这是日志的第一部分::

[Stage 9:>                                                          (0 + 2) 
/ 2]18/03/19 19:58:22 WARN TaskSetManager: Lost task 1.0 in stage 9.0 (TID 
72, ip-172-31-42-11.ec2.internal, executor 9): java.io.IOException: Cannot 
run program "/mnt/tmp/spark-bdd582ec-a5ac-4bb1-874e-832cd5427b18/userFiles-
497f6051-6f49-4268-b9c5-a28c2ad5edc6/PipeEx.sh": error=2, No such file or 
directory

有人知道吗?我正在使用 Spark 2.2.1 和 scala 2.11.8

谢谢

【问题讨论】:

    标签: scala apache-spark pipe


    【解决方案1】:

    我能够解决这个问题,一旦我删除了 SparkFiles.get(distScriptName) 命令。 所以我的最终代码是这样的

    val distScript = "/home/hadoop/PipeEx.sh"
    val distScriptName = "./PipeEx.sh"
    sc.addFile(distScript)
    
    val ipData = sc.parallelize(List("asd","xyz","zxcz","sdfsfd","Ssdfd","Sdfsf"))
    val opData = ipData.pipe(distScriptName)
    opData.collect().foreach(println)
    

    我不太确定为什么删除 SparkFiles.get() 可以解决问题

    【讨论】:

      猜你喜欢
      • 2010-12-04
      • 2014-03-08
      • 1970-01-01
      • 1970-01-01
      • 2021-04-22
      • 2017-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多