2016-03-23 16 views
5

Tôi không thể tìm ra cách đơn vị thử nghiệm ứng dụng Java Spark ...Làm thế nào để kiểm tra Java-Spark bằng JUNit?

Tôi có một bài kiểm tra đơn giản ở đây, nhưng nó không thành công với ngoại lệ của Jackson. Tôi cũng đã cố gắng thiết lập tổng thể để "địa phương"

private JavaSparkContext sparkCtx; 

    @Before 
    public void init() throws IllegalArgumentException, IOException { 
     //ctxtBuilder = new ContextBuilder(tempFolder); 
     SparkConf conf = new SparkConf(); 
     conf.setMaster("local[2]"); 
     conf.setAppName("junit"); 
     sparkCtx = new JavaSparkContext(conf);  
    } 

    @Test 
    public void test() { 
     final List<Integer> nums = new ArrayList<Integer>(); 
     nums.add(3); 
     nums.add(4); 
     nums.add(2); 
     JavaRDD<Integer> rdd = sparkCtx.parallelize(nums,1); 
     assertEquals(3, rdd.count()); 

    } 

Exception

java.lang.VerifyError: class com.fasterxml.jackson.module.scala.ser.ScalaIteratorSerializer overrides final method withResolved.(Lcom/fasterxml/jackson/databind/BeanProperty;Lcom/fasterxml/jackson/databind/jsontype/TypeSerializer;Lcom/fasterxml/jackson/databind/JsonSerializer;)Lcom/fasterxml/jackson/databind/ser/std/AsArraySerializerBase; 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:760) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) 
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at com.fasterxml.jackson.module.scala.ser.IteratorSerializerModule$class.$init$(IteratorSerializerModule.scala:70) 
    at com.fasterxml.jackson.module.scala.DefaultScalaModule.<init>(DefaultScalaModule.scala:19) 
    at com.fasterxml.jackson.module.scala.DefaultScalaModule$.<init>(DefaultScalaModule.scala:35) 
    at com.fasterxml.jackson.module.scala.DefaultScalaModule$.<clinit>(DefaultScalaModule.scala) 
    at org.apache.spark.rdd.RDDOperationScope$.<init>(RDDOperationScope.scala:78) 
    at org.apache.spark.rdd.RDDOperationScope$.<clinit>(RDDOperationScope.scala) 
    at org.apache.spark.SparkContext.withScope(SparkContext.scala:700) 
    at org.apache.spark.SparkContext.parallelize(SparkContext.scala:714) 
    at org.apache.spark.api.java.JavaSparkContext.parallelize(JavaSparkContext.scala:145) 
    at sal_mr.ingestion.storage.IngestionOutputFormatTest.test(IngestionOutputFormatTest.java:38) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) 
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) 
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) 
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) 
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) 
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) 
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) 
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) 
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) 
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) 
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) 
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) 
    at org.junit.runners.ParentRunner.run(ParentRunner.java:309) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) 
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192) 

điều khiển đầu ra:

2016-03-23 09:56:58 INFO SparkContext:59 - Running Spark version 1.5.0 
2016-03-23 09:56:59 INFO Utils:59 - Successfully started service 'sparkDriver' on port 38028. 
2016-03-23 09:57:00 INFO Utils:59 - Successfully started service 'SparkUI' on port 4040. 
2016-03-23 09:57:00 INFO Executor:59 - Starting executor ID driver on host localhost 
2016-03-23 09:57:00 INFO Utils:59 - Successfully started service 'org.apache.spark.network.netty.NettyBlockTransferService' on port 35071. 
2016-03-23 09:57:00 INFO BlockManagerMasterEndpoint:59 - Registering block manager localhost:35071 with 1918.1 MB RAM, BlockManagerId(driver, localhost, 35071) 
2016-03-23 09:57:00 INFO BlockManagerMaster:59 - Registered BlockManager 
2016-03-23 09:57:00 INFO SparkContext:59 - Invoking stop() from shutdown hook 
+1

Tôi đã thử nghiệm mã của bạn với Spark 1.6.0 và 1.5.0. Tôi không thể tái tạo lỗi của bạn. Tôi đã vượt qua bài kiểm tra của bạn. Bạn có chắc đây là mã duy nhất bạn đang chạy không? – PinoSan

+0

@PinoSan ... Tôi vẫn không thể làm việc này. Ý bạn là gì đây là mã duy nhất tôi đang chạy ... Đây là những bài kiểm tra junit ... Tôi nghĩ rằng tôi đang thiếu một cái gì đó ... – hba

Trả lời

4

OK, tôi nghĩ rằng tôi đã có một vấn đề không khớp.

Điều này thread dẫn tôi đến nó.

Trong pom của tôi, tôi đã có sự phụ thuộc như sau:

<dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-databind</artifactId> 
     <version>2.7.1</version>   
    </dependency> 

nhìn vào lọ châm ngòi kéo trong tôi thấy: jackson-module-scala_2.10-2.2.3.jar

tôi loại bỏ các phụ thuộc jackson nay là kiểm tra đi!

+0

Tôi có nghĩa là phải là một cái gì đó khác. Tôi rất vui vì bạn đã tìm thấy giải pháp – PinoSan

+0

@PinoSan sau khi tôi thấy rằng bạn đã chạy thành công ... Tôi bắt đầu đào tìm 'cái gì khác' ... Cảm ơn sự giúp đỡ của bạn! – hba

+0

bạn được chào đón. – PinoSan

Các vấn đề liên quan