首页 > 解决方案 > 如何将变量参数传递给我的 scala 程序?

问题描述

我对 scala spark 很陌生。在这里,我有一个字数统计程序,其中我将输入文件作为参数传递,而不是对其进行硬编码和读取。但是当我运行程序时,我在线程“main”java.lang.ArrayIndexOutOfBoundsException 中得到一个错误异常:0

我认为这是因为我没有提到我在主课上要接受的论点,但不知道该怎么做。

我尝试按原样运行程序,并尝试更改运行配置。我不知道如何在我的主类中将文件名(在代码中)作为参数传递

import org.apache.spark.SparkContext
import org.apache.spark.SparkConf
import org.apache.spark.sql.types.{StructType,StructField,StringType};
import org.apache.spark.sql.Row;

object First {
 def main(args : Array[String]): Unit = {
   val filename = args(0)
   val cf = new SparkConf().setAppName("Tutorial").setMaster("local")
   val sc = new SparkContext(cf)
   val input = sc.textFile(filename)
   val w = input.flatMap(line => line.split(" ")).map(word=> 
   (word,1)).reduceByKey(_ + _)
   w.collect.foreach(println)
   w.saveAsTextFile(args(1))
  } 


}

我希望通过在我的主类中传递正确的参数(输入文件并将输出文件保存为参数)来运行这个程序。我正在使用 Scala Eclipse IDE。我不知道要对我的程序进行哪些更改,请帮助我,因为我是新手。

标签: scalaapache-spark

解决方案


在项目的运行配置中,main 旁边有一个名为“(x)=Arguments”的选项,您可以在“Program Arguments”部分将参数传递给 main。

此外,您可以打印 args.length 以查看执行上述操作后代码实际接收的参数数量。


推荐阅读