scala - 如何将变量参数传递给我的 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。我不知道要对我的程序进行哪些更改,请帮助我,因为我是新手。
解决方案
在项目的运行配置中,main 旁边有一个名为“(x)=Arguments”的选项,您可以在“Program Arguments”部分将参数传递给 main。
此外,您可以打印 args.length 以查看执行上述操作后代码实际接收的参数数量。
推荐阅读
- javascript - 开玩笑说只转换模块中的某些文件类型
- sql - 将 varchar 值“25.03.2020”转换为数据类型 int 时转换失败
- javascript - 将 django 模板中的 html 标签参数传递给 javascript 函数
- c++ - 在 C++ 中删除链表数组
- python - 如何存储来自 for 循环的列表然后重用它?
- javascript - 如何阻止点击劫持
- javascript - 如何使用 JavaScript 获取尚不存在的元素的样式?
- java - Hibernate @Entity 与非列对象的 Spring @Autowired 冲突
- python - Python小数位数固定
- html - rvest 在尝试从网站上抓取表格时返回空列表