2016-11-15 73 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