Apache spark spark管道中使用的脚本执行了多少次。?
我尝试了下面的spark scala代码,得到了如下所述的输出。 我试图将输入传递给脚本,但它没有收到,当我使用collect时,脚本中使用的print语句出现了两次 首先是我的简单且非常基本的perl脚本:Apache spark spark管道中使用的脚本执行了多少次。?,apache-spark,Apache Spark,我尝试了下面的spark scala代码,得到了如下所述的输出。 我试图将输入传递给脚本,但它没有收到,当我使用collect时,脚本中使用的print语句出现了两次 首先是我的简单且非常基本的perl脚本: #!/usr/bin/perl print("arguments $ARGV[0] \n"); // Just print the arguments. 我的火花代码: object PipesExample { def main(args:Array[String]){ v
#!/usr/bin/perl
print("arguments $ARGV[0] \n"); // Just print the arguments.
我的火花代码:
object PipesExample {
def main(args:Array[String]){
val conf = new SparkConf();
val sc = new SparkContext(conf);
val distScript = "/home/srinivas/test.pl"
sc.addFile(distScript)
val rdd = sc.parallelize(Array("srini"))
val piped = rdd.pipe(Seq(SparkFiles.get("test.pl")))
println(" output " + piped.collect().mkString(" "));
}
}
输出是这样的
output arguments arguments
1) 我犯了什么错误使它无法接受这些论点。?
2) 为什么要执行两次
如果它看起来太简单,请向我道歉。我试图尽可能地理解,并想澄清我的疑问。根据我的经验,它执行了两次,因为spark将RDD划分为两个分区,每个分区都传递给外部脚本。根据我的经验,它执行两次,因为spark将RDD划分为两个分区,每个分区都传递给外部脚本。应用程序无法选择test.pl文件的原因是,该文件位于某个节点的位置。但应用程序主节点是在集群中的一个节点中创建的。因此,如果文件不在该节点中,它将无法拾取该文件
您应该始终将文件保存在HDFS或S3中以访问外部文件。或者通过spark命令选项传递HDFS文件位置。应用程序无法拾取test.pl文件的原因是,该文件位于某个节点的位置。但应用程序主节点是在集群中的一个节点中创建的。因此,如果文件不在该节点中,它将无法拾取该文件
您应该始终将文件保存在HDFS或S3中以访问外部文件。或者通过spark命令选项传递HDFS文件位置。集群中有多少实例?只有一个实例。事实上,我正在ubuntu的本地spark安装上尝试,没有覆盖任何配置,你可以看到,我也没有添加分区。你的集群中有多少实例?只有一个实例。事实上,我正在ubuntu的本地spark安装上试用它,没有覆盖任何配置,您可以看到,我也没有添加分区。