2016-11-15 30 views
0

我是spark和scala的新手。 我想从bash脚本中执行一些spark代码。我写了下面的代码。在Bash脚本中执行Apache Spark(Scala)代码

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)) 
    } 
} 

这是bash脚本,调用Apache的火花/ Scala代码。

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的文件没有任何火花功能(这是一个纯粹的斯卡拉文件)编写的,但是当有Apache的火花进口失败。

什么是从bash脚本运行并执行此操作的好方法?我必须调用spark shell来执行代码吗?

+3

尝试告知要提供火花核心依赖于像斯卡拉-classpath类路径“的* .jar” YourFile.scala – FaigB

+0

我用下面的命令 scala -classpath simple-project_2.11-1.0.jar SimpleApp.scala $ Abi $ adj 但仍然存在相同的错误@FaigB – Aroon

+1

如果您在$ spark_home/lib/spark-core_2的classpath jar中使用本地spark。 10- {version} .jar或从https://mvnrepository.com/artifact/org.apache.spark/spark-core_2.10下载并放在类路径 – FaigB

回答

1

设立火花与环境变量和运行方式与@puhlen spark-submit -class SimpleApp simple-project_2.11-1.0.jar $Abi $adj