我是火花和斯卡拉的新手。 我想从bash脚本中执行一些spark代码。我写了以下代码。
Scala代码是在单独的.scala
文件中编写的,如下所示。
Scala代码:
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
object SimpleApp {
def main(args: Array[String]) {
val conf = new SparkConf().setAppName("Simple Application")
val sc = new SparkContext(conf)
println("x="+args(0),"y="+args(1))
}
}
这是调用Apache-spark / scala代码的bash脚本。
Bash代码
#!/usr/bin/env bash
Absize=File_size1
AdBsize=File_size2
for i in `seq 2 $ABsize`
do
for j in `seq 2 $ADsize`
do
Abi=`sed -n ""$i"p" < File_Path1`
Adj=`sed -n ""$j"p" < File_Path2`
scala SimpleApp.scala $Abi $adj
done
done
但后来我发现了以下错误。
错误:
error:object apache is not a member of package org
import org.apache.spark.SparkContext
^
error: object apache is not a member of package org
import org.apache.spark.SparkContext._
^
error: object apache is not a member of package org
import org.apache.spark.SparkConf
^
error: not found:type SparkConf
val conf = new SparkConf().setAppName("Simple Application") ^
error: not found:type SparkContext
如果scala文件没有任何spark函数(这是一个纯scala文件),上面的代码可以正常工作,但是当有apache-spark导入时会失败。
从bash脚本运行和执行此操作的好方法是什么?我是否必须调用spark shell来执行代码?
答案 0 :(得分:1)
使用环境变量设置spark并运行@puhlen告诉spark-submit -class SimpleApp simple-project_2.11-1.0.jar $Abi $adj