Apache Spark - SparkConf - local[K]

0

Witam,

jestem obecnie na etapie zapoznawania się z korzystaniem z framework Spark i przy kompilacji kodu pojawia mi sie błąd:

16/02/27 15:13:19 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
16/02/27 15:13:19 ERROR SparkContext: Error initializing SparkContext. 

Cały kod programu:

 package com.original.java.sparkexample;

import org.apache.spark.SparkConf;
import org.apache.spark.SparkJobInfo;
import org.apache.spark.SparkStageInfo;
import org.apache.spark.api.java.JavaFutureAction;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.Function;

import java.util.Arrays;
import java.util.List;

/**
 * Example of using Spark's status APIs from Java.
 */
public final class JavaStatusTrackerDemo {

  public static final String APP_NAME = "JavaStatusAPIDemo";

  public static final class IdentityWithDelay<T> implements Function<T, T> {
    @Override
    public T call(T x) throws Exception {
      Thread.sleep(2 * 1000);  // 2 seconds
      return x;
    }
  }

  public static void main(String[] args) throws Exception {
    SparkConf sparkConf = new SparkConf().setAppName(APP_NAME);
    final JavaSparkContext sc = new JavaSparkContext(sparkConf);

    // Example of implementing a progress reporter for a simple job.
    JavaRDD<Integer> rdd = sc.parallelize(Arrays.asList(1, 2, 3, 4, 5), 5).map(
        new IdentityWithDelay<Integer>());
    JavaFutureAction<List<Integer>> jobFuture = rdd.collectAsync();
    while (!jobFuture.isDone()) {
      Thread.sleep(1000);  // 1 second
      List<Integer> jobIds = jobFuture.jobIds();
      if (jobIds.isEmpty()) {
        continue;
      }
      int currentJobId = jobIds.get(jobIds.size() - 1);
      SparkJobInfo jobInfo = sc.statusTracker().getJobInfo(currentJobId);
      SparkStageInfo stageInfo = sc.statusTracker().getStageInfo(jobInfo.stageIds()[0]);
      System.out.println(stageInfo.numTasks() + " tasks total: " + stageInfo.numActiveTasks() +
          " active, " + stageInfo.numCompletedTasks() + " complete");
    }

    System.out.println("Job results are: " + jobFuture.get());
    sc.stop();
  }
}

Obawiam się że mam nieodpowiednio zainstalowany Hadoop. Co nalezy zrobić aby ten błąd już nie istaniał ?

0

Ten warning nie ma nic wspólnego z późniejszym errorem.
Wklej cały error z pełnym stacktrace. Na pewno musi być coś więcej gdzieś.

0
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
16/02/27 17:08:41 INFO SparkContext: Running Spark version 1.4.0
16/02/27 17:08:42 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
16/02/27 17:08:43 ERROR SparkContext: Error initializing SparkContext.
org.apache.spark.SparkException: A master URL must be set in your configuration
	at org.apache.spark.SparkContext.<init>(SparkContext.scala:368)
	at org.apache.spark.api.java.JavaSparkContext.<init>(JavaSparkContext.scala:61)
	at com.original.java.sparkexample.JavaStatusTrackerDemo.main(JavaStatusTrackerDemo.java:31)
16/02/27 17:08:43 INFO SparkContext: Successfully stopped SparkContext
Exception in thread "main" org.apache.spark.SparkException: A master URL must be set in your configuration
	at org.apache.spark.SparkContext.<init>(SparkContext.scala:368)
	at org.apache.spark.api.java.JavaSparkContext.<init>(JavaSparkContext.scala:61)
	at com.original.java.sparkexample.JavaStatusTrackerDemo.main(JavaStatusTrackerDemo.java:31)
16/02/27 17:08:43 INFO Utils: Shutdown hook called 
0

Problem rozwiązany poprzez rozszerzenie linijki kodu gdzie mamy stworzenie obiektu sparkConf klasy SparkConf.

SparkConf sparkConf = new SparkConf().setAppName("JavaSparkPi").setMaster("local[2]").set("spark.executor.memory","1g");

zamiast:

SparkConf sparkConf = new SparkConf().setAppName("JavaSparkPi");

Głównie chodziło o master URL local[K], gdzie K to jest liczba rdzeni procesora

0

próbuję odpalić sprk-shell na windows 7 i dostaje:

'C:\Program' is not recognized as an internal or external command,
operable program or batch file.

scala, java, sbt ladnie smigaja w konsoli. Jakies pomysly?

0

Masz spację w ścieżce, próbuj

"c:\Program Files"\ ... \bin\spark-shell.cmd
lub
"c:\Program Files\ ... \bin\spark-shell.cmd"
0

O cholera... Faktycznie dzieki.
Co prawda teraz cos buczy o nullpointerze ale inny efekt przynajmniej ;)

0

kolega cos tam dlubie ze sparkiem, ja niespecjalnie sie na tym znam.

ma jakis tam streaming, ktory dziala caly czas.
chcialby jakas metode odpalic w osobnym wątku czy cokolwiek, zeby jedno i drugie dzialalo jednoczesnie.

Czy new Thread albo wyslanie do Aktora powinno zadzialac ?
widzialem ,ze jakis forkjoinpool jest tworzone jak probuje tak zrobic.

Czy nie dzieje sie tak, ze watek jest tworzony ale jest on mergowany od razu do maina ?
Poniewaz streaming wydaje sie zostac zablokowany w momencie odpalenia threada/aktora.

1 użytkowników online, w tym zalogowanych: 0, gości: 1