在Bash脚本中执行Apache Spark(Scala)代码

时间:2016-11-15 10:00:15

标签: bash scala shell apache-spark

我是火花和斯卡拉的新手。 我想从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来执行代码?

1 个答案:

答案 0 :(得分:1)

使用环境变量设置spark并运行@puhlen告诉spark-submit -class SimpleApp simple-project_2.11-1.0.jar $Abi $adj