我有一个测试脚本来读取作为参数提供的文本文件,如下所示:
test.scala:
$ cat test.scala
import scala.io.Source
val filename = args(0)
for (line <- Source.fromFile(filename).getLines) {
println(line)
}
我想在下面阅读一个文本文件:
$ cat test.txt
test1
test2
test3
我需要在命令行中运行scala,如下所示:
spark-shell -i test.scala test.txt
我希望test.txt被识别为args(0)
,但我看到的输出如下:
:26:错误:找不到:值args val filename = args(0)
有人可以启发我正确使用它吗?非常感谢。
更新:
cat test.scala
import scala.io.Source
val args = spark.sqlContext.getConf("spark.driver.args").split(",")
val filename = args(0)
for (line <- Source.fromFile(filename).getLines) {
println(line)
}
测试结果:
spark-shell -i test.scala --conf spark.driver.args="test.txt"
SQL context available as sqlContext. Loading test.scala... import scala.io.Source <console>:26: error: not found: value spark val args = spark.sqlContext.getConf("spark.driver.args").split(",")
答案 0 :(得分:0)
您可以将自定义--conf
参数值传递给spark。这是传递参数的方式:
import scala.io.Source
val args = spark.sqlContext.getConf("spark.driver.args").split(",")
val arg1 = args(0)
val arg2 = arg(1)
print(arg1)
在--conf
中,我必须传递spark.driver.args
参数的值。因此,运行脚本的最终命令将是:
spark-shell -i test.scala --conf spark.driver.args="param1value,param2value,param3value"
答案 1 :(得分:0)
这对我有用
import scala.io.Source
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
val args = sqlContext.getConf("spark.driver.args").split(",")
println(args)
args