2016-10-07 4 views
0

sparkクラスタに対してsparkプログラムをリモートで開発し、IDEの「Run」ボタンをクリックするだけで、jarファイルに変換せずに実行する必要があります。しかし、私はいくつかの混乱したエラーがあります。ローカルPCからリモートクラスタへのSparkアプリの開発

は、ここでは、コードです:

import org.apache.spark.SparkContext 
import org.apache.spark.SparkContext._ 
import org.apache.spark.SparkConf 

object SimpleApp { 
    def main(args: Array[String]) { 
    val logFile = "D:\\Lab\\ScalaIDE\\data\\README.md" // file resides in local windows PC 
    val conf = new SparkConf().setAppName("Simple Application").setMaster("spark://172.31.110.234:7077") 
    val sc = new SparkContext(conf) 
    val logData = sc.textFile(logFile, 2).cache() 
    val numAs = logData.filter(line => line.contains("a")).count() 
    val numBs = logData.filter(line => line.contains("b")).count() 
    println("Lines with a: %s, Lines with b: %s".format(numAs, numBs)) 
    } 
} 

172.31.110.234が私のスパークスタンドアロンクラスタ(Linux)のです。ローカルのPC(Windows、ScalaIDEがインストールされている、IP:172.31.2.77)からこのコードを実行します。

メッセージ文句:調査した

16/10/07 17:47:00 ERROR Shell: Failed to locate the winutils binary in the hadoop binary path 
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries. 

を、回避策はCでwinutils.exeをダウンロードすることが示唆:\ビンは、その後、私は、変数ログファイル上のコード行を追加しようとしました:

System.setProperty("hadoop.home.dir", "C:\\"); 

次のような別のエラーメッセージが表示されます。

16/10/07 17:56:28 INFO SparkContext: Running Spark version 2.0.1 
16/10/07 17:56:28 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 
... 
... 
16/10/07 17:56:34 WARN TaskSetManager: Lost task 0.0 in stage 0.0 (TID 0, 172.31.110.234): java.lang.ClassNotFoundException: org.bigdata.linknet.SimpleApp$$anonfun$1 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
... 
... 
Exception in thread "main" org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 0.0 failed 4 times, most recent failure: Lost task 0.3 in stage 0.0 (TID 6, 172.31.110.234): java.lang.ClassNotFoundException: org.bigdata.linknet.SimpleApp$$anonfun$1 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
... 
... 

質問:私のシナリオはですか?私のPCからスパークコードを実行するためのossible(「実行」ボタンをクリックするだけで)スパーククラスター? 私は同様の投稿Run Spark/Cloudera application in remote machine with Eclipseを読んだことがありますが、私の質問を解決していないようです。

おかげで、 Yusata

答えて

0

がwinutilsバイナリエラーを見つけることができませんでしたが問題ありませんが、あなたは通常、それを無視することができます。

Sparkクラスターにクラスがないため、上記の例外がスローされます。あなたが望むものを達成するために

、あなたが必要となります(あなたはGradleの使用している場合 - > fatJarまたはshadowJar)

  1. は、jarファイルを作成し、あなたのコードでは
  2. をあなたはSparkConfを生成するとき、あなたがする必要があります、マスターアドレスと相対的なJARの場所を指定します。
SparkConf conf = new SparkConf() 
.setMaster("spark://SPARK-MASTER-ADDRESS:7077") 
.setJars(new String[]{"build\\libs\\spark-test-1.0-SNAPSHOT.jar"}) 
.setAppName("APP-NAME"); 
関連する問題