2017-07-28 42 views
1

我很新到Apache的Spark框架,試圖建立我的第一個喜歡的JUnit如下:然而我是否需要安裝Apache Spark和/或Scala才能運行jUnit?

package com.sample.ccspark; 

import com.holdenkarau.spark.testing.SharedJavaSparkContext; 
import org.apache.spark.api.java.JavaRDD; 
import org.junit.Test; 

import java.util.List; 

import static java.util.Arrays.asList; 
import static org.hamcrest.core.Is.is; 
import static org.junit.Assert.assertThat; 

public class SimpleTest extends SharedJavaSparkContext { 

    @Test 
    public void initializationWorks() { 
     List<Integer> list = asList(1, 2, 3, 4); 
     JavaRDD<Integer> rdd = jsc().parallelize(list); 
     assertThat(rdd.count(), is(list.size())); 
    } 
} 

與在pom.xml

<dependency> 
     <groupId>com.holdenkarau</groupId> 
     <artifactId>spark-testing-base_2.11</artifactId> 
     <version>2.2.0_0.7.2</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.spark</groupId> 
     <artifactId>spark-core_2.10</artifactId> 
     <version>2.2.0</version> 
    </dependency> 

一切愉快地編譯下面的依賴關係,運行時我得到以下異常:

Exception in thread "dispatcher-event-loop-6" java.lang.NoClassDefFoundError: 
scala/runtime/AbstractPartialFunction$mcVL$sp 

我沒有Spark或斯卡拉本地安裝的呢,是下印象TESTIN g框架應該照顧所有的依賴關係。有什麼我在這裏失蹤?

+0

我不確定,但是當你有這個錯誤:'NoClassDefFoundError'也許它只是意味着簡單的類不存在。 我認爲如果Simple不存在,你就不能編寫SimpleTest。我可能錯了。 – Minirock

+0

從IntelliJ判斷,AbstractUnitFunction是存在於jUnit本身中的。在我的理解中,這與測試嘗試將Spark運行時初始化爲一個單獨的過程(這只是我的理論)並沒有正確的類路徑有關。 – Altair7852

回答

2

在器物名稱
<artifactId>spark-testing-base_2.11</artifactId> <artifactId>spark-core_2.10</artifactId>

的最後一個數字是斯卡拉的版本。我想你應該只爲這兩種情況選擇一種。

+0

就是這樣!更改爲spark-core_2.11,現在所有的工作:) – Altair7852

相關問題