【发布时间】:2018-02-02 19:03:00
【问题描述】:
我们在以下框架中编写了一些 spark/scala 单元测试用例: - https://github.com/holdenk/spark-testing-base
对于我们的一些功能,我们将“json4s-jackson”升级到“3.5.3” - 在将 jackson 版本升级到最新版本后,我们所有的单元测试用例都失败并出现以下错误:
[信息] #getPageViewWithMember [信息] com.testrunner.data.processors.cloudfront.CloudfrontLogProcessorJobSpec * 中止 * [info] java.lang.ExceptionInInitializerError: [info] at org.apache.spark.sql.execution.SparkPlan.executeQuery(SparkPlan.scala:132) [信息] 在 org.apache.spark.sql.execution.SparkPlan.execute(SparkPlan.scala:113) [信息] 在 org.apache.spark.sql.execution.SparkPlan.getByteArrayRdd(SparkPlan.scala:225) [信息] 在 org.apache.spark.sql.execution.SparkPlan.executeCollect(SparkPlan.scala:272) [信息] 在 org.apache.spark.sql.Dataset$$anonfun$org$apache$spark$sql$Dataset$$execute$1$1.apply(Dataset.scala:2386) [信息] 在 org.apache.spark.sql.execution.SQLExecution$.withNewExecutionId(SQLExecution.scala:57) [信息] 在 org.apache.spark.sql.Dataset.withNewExecutionId(Dataset.scala:2788) [信息] 在 org.apache.spark.sql.Dataset.org$apache$spark$sql$Dataset$$execute$1(Dataset.scala:2385) [信息] 在 org.apache.spark.sql.Dataset$$anonfun$org$apache$spark$sql$Dataset$$collect$1.apply(Dataset.scala:2390) [信息] 在 org.apache.spark.sql.Dataset$$anonfun$org$apache$spark$sql$Dataset$$collect$1.apply(Dataset.scala:2390) [信息] ... [信息] 原因: com.fasterxml.jackson.databind.JsonMappingException:不兼容 杰克逊版本:2.8.4 [信息] 在 com.fasterxml.jackson.module.scala.JacksonModule$class.setupModule(JacksonModule.scala:64) [信息] 在 com.fasterxml.jackson.module.scala.DefaultScalaModule.setupModule(DefaultScalaModule.scala:19) [信息] 在 com.fasterxml.jackson.databind.ObjectMapper.registerModule(ObjectMapper.java:745) [信息] 在 org.apache.spark.rdd.RDDOperationScope$.(RDDOperationScope.scala:82) [信息] 在 org.apache.spark.rdd.RDDOperationScope$.(RDDOperationScope.scala) [信息] 在 org.apache.spark.sql.execution.SparkPlan.executeQuery(SparkPlan.scala:132) [信息] 在 org.apache.spark.sql.execution.SparkPlan.execute(SparkPlan.scala:113) [信息] 在 org.apache.spark.sql.execution.SparkPlan.getByteArrayRdd(SparkPlan.scala:225) [信息] 在 org.apache.spark.sql.execution.SparkPlan.executeCollect(SparkPlan.scala:272) [信息] 在 org.apache.spark.sql.Dataset$$anonfun$org$apache$spark$sql$Dataset$$execute$1$1.apply(Dataset.scala:2386) [信息] ... java.lang.ExceptionInInitializerError 在 org.apache.spark.sql.execution.SparkPlan.executeQuery(SparkPlan.scala:132) 在 org.apache.spark.sql.execution.SparkPlan.execute(SparkPlan.scala:113) 在 org.apache.spark.sql.execution.SparkPlan.getByteArrayRdd(SparkPlan.scala:225) 在 org.apache.spark.sql.execution.SparkPlan.executeCollect(SparkPlan.scala:272) 在 org.apache.spark.sql.Dataset$$anonfun$org$apache$spark$sql$Dataset$$execute$1$1.apply(Dataset.scala:2386) 在 org.apache.spark.sql.execution.SQLExecution$.withNewExecutionId(SQLExecution.scala:57) 在 org.apache.spark.sql.Dataset.withNewExecutionId(Dataset.scala:2788) 在 org.apache.spark.sql.Dataset.org$apache$spark$sql$Dataset$$execute$1(Dataset.scala:2385) 在 org.apache.spark.sql.Dataset$$anonfun$org$apache$spark$sql$Dataset$$collect$1.apply(Dataset.scala:2390) 在 org.apache.spark.sql.Dataset$$anonfun$org$apache$spark$sql$Dataset$$collect$1.apply(Dataset.scala:2390) 在 org.apache.spark.sql.Dataset.withCallback(Dataset.scala:2801) 在 org.apache.spark.sql.Dataset.org$apache$spark$sql$Dataset$$collect(Dataset.scala:2390) 在 org.apache.spark.sql.Dataset.collect(Dataset.scala:2366) 在 com.testrunner.data.processors.cloudfront.CloudfrontLogProcessorJobSpec$$anonfun$2.apply(CloudfrontLogProcessorJobSpec.scala:101) 在 com.testrunner.data.processors.cloudfront.CloudfrontLogProcessorJobSpec$$anonfun$2.apply(CloudfrontLogProcessorJobSpec.scala:88) 在 org.scalatest.OutcomeOf$class.outcomeOf(OutcomeOf.scala:85) 在 org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104) 在 org.scalatest.Transformer.apply(Transformer.scala:22) 在 org.scalatest.Transformer.apply(Transformer.scala:20) 在 org.scalatest.FlatSpecLike$$anon$1.apply(FlatSpecLike.scala:1682) 在 org.scalatest.TestSuite$class.withFixture(TestSuite.scala:196) 在 org.scalatest.FlatSpec.withFixture(FlatSpec.scala:1685) 在 org.scalatest.FlatSpecLike$class.invokeWithFixture$1(FlatSpecLike.scala:1679) 在 org.scalatest.FlatSpecLike$$anonfun$runTest$1.apply(FlatSpecLike.scala:1692) 在 org.scalatest.FlatSpecLike$$anonfun$runTest$1.apply(FlatSpecLike.scala:1692) 在 org.scalatest.SuperEngine.runTestImpl(Engine.scala:289) 在 org.scalatest.FlatSpecLike$class.runTest(FlatSpecLike.scala:1692) 在 com.testrunner.data.processors.cloudfront.CloudfrontLogProcessorJobSpec.org$scalatest$BeforeAndAfterEach$$super$runTest(CloudfrontLogProcessorJobSpec.scala:16) 在 org.scalatest.BeforeAndAfterEach$class.runTest(BeforeAndAfterEach.scala:221) 在 com.testrunner.data.processors.cloudfront.CloudfrontLogProcessorJobSpec.runTest(CloudfrontLogProcessorJobSpec.scala:16) 在 org.scalatest.FlatSpecLike$$anonfun$runTests$1.apply(FlatSpecLike.scala:1750) 在 org.scalatest.FlatSpecLike$$anonfun$runTests$1.apply(FlatSpecLike.scala:1750) 在 org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:396) 在 org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:384) 在 scala.collection.immutable.List.foreach(List.scala:381) 在 org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:384) 在 org.scalatest.SuperEngine.org$scalatest$SuperEngine$$runTestsInBranch(Engine.scala:373) 在 org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:410) 在 org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:384) 在 scala.collection.immutable.List.foreach(List.scala:381) 在 org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:384) 在 org.scalatest.SuperEngine.org$scalatest$SuperEngine$$runTestsInBranch(Engine.scala:379) 在 org.scalatest.SuperEngine.runTestsImpl(Engine.scala:461) 在 org.scalatest.FlatSpecLike$class.runTests(FlatSpecLike.scala:1750) 在 org.scalatest.FlatSpec.runTests(FlatSpec.scala:1685) 在 org.scalatest.Suite$class.run(Suite.scala:1147) 在 org.scalatest.FlatSpec.org$scalatest$FlatSpecLike$$super$run(FlatSpec.scala:1685) 在 org.scalatest.FlatSpecLike$$anonfun$run$1.apply(FlatSpecLike.scala:1795) 在 org.scalatest.FlatSpecLike$$anonfun$run$1.apply(FlatSpecLike.scala:1795) 在 org.scalatest.SuperEngine.runImpl(Engine.scala:521) 在 org.scalatest.FlatSpecLike$class.run(FlatSpecLike.scala:1795) 在 com.testrunner.data.processors.cloudfront.CloudfrontLogProcessorJobSpec.org$scalatest$BeforeAndAfterAll$$super$run(CloudfrontLogProcessorJobSpec.scala:16) 在 org.scalatest.BeforeAndAfterAll$class.liftedTree1$1(BeforeAndAfterAll.scala:213) 在 org.scalatest.BeforeAndAfterAll$class.run(BeforeAndAfterAll.scala:210) 在 com.testrunner.data.processors.cloudfront.CloudfrontLogProcessorJobSpec.run(CloudfrontLogProcessorJobSpec.scala:16) 在 org.scalatest.tools.Framework.org$scalatest$tools$Framework$$runSuite(Framework.scala:314) 在 org.scalatest.tools.Framework$ScalaTestTask.execute(Framework.scala:480) 在 sbt.TestRunner.runTest$1(TestFramework.scala:76) 在 sbt.TestRunner.run(TestFramework.scala:85) 在 sbt.TestFramework$$anon$2$$anonfun$$init$$1$$anonfun$apply$8.apply(TestFramework.scala:202) 在 sbt.TestFramework$$anon$2$$anonfun$$init$$1$$anonfun$apply$8.apply(TestFramework.scala:202) 在 sbt.TestFramework$.sbt$TestFramework$$withContextLoader(TestFramework.scala:185) 在 sbt.TestFramework$$anon$2$$anonfun$$init$$1.apply(TestFramework.scala:202) 在 sbt.TestFramework$$anon$2$$anonfun$$init$$1.apply(TestFramework.scala:202) 在 sbt.TestFunction.apply(TestFramework.scala:207) 在 sbt.Tests$.sbt$Tests$$processRunnable$1(Tests.scala:239) 在 sbt.Tests$$anonfun$makeSerial$1.apply(Tests.scala:245) 在 sbt.Tests$$anonfun$makeSerial$1.apply(Tests.scala:245) 在 sbt.std.Transform$$anon$3$$anonfun$apply$2.apply(System.scala:44) at sbt.std.Transform$$anon$3$$anonfun$apply$2.apply(System.scala:44) at sbt.std.Transform$$anon$4.work(System.scala:63) at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228) 在 sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228) 在 sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17) 在 sbt.Execute.work(Execute.scala:237) 在 sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228) at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228) at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159) 在 sbt.CompletionService$$anon$2.call(CompletionService.scala:28) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:748) 引起: com.fasterxml.jackson.databind.JsonMappingException:不兼容 杰克逊版本:2.8.4 at com.fasterxml.jackson.module.scala.JacksonModule$class.setupModule(JacksonModule.scala:64) 在 com.fasterxml.jackson.module.scala.DefaultScalaModule.setupModule(DefaultScalaModule.scala:19) 在 com.fasterxml.jackson.databind.ObjectMapper.registerModule(ObjectMapper.java:745) 在 org.apache.spark.rdd.RDDOperationScope$.(RDDOperationScope.scala:82) 在 org.apache.spark.rdd.RDDOperationScope$.(RDDOperationScope.scala) 在 org.apache.spark.sql.execution.SparkPlan.executeQuery(SparkPlan.scala:132) 在 org.apache.spark.sql.execution.SparkPlan.execute(SparkPlan.scala:113) 在 org.apache.spark.sql.execution.SparkPlan.getByteArrayRdd(SparkPlan.scala:225) 在 org.apache.spark.sql.execution.SparkPlan.executeCollect(SparkPlan.scala:272) 在 org.apache.spark.sql.Dataset$$anonfun$org$apache$spark$sql$Dataset$$execute$1$1.apply(Dataset.scala:2386) 在 org.apache.spark.sql.execution.SQLExecution$.withNewExecutionId(SQLExecution.scala:57) 在 org.apache.spark.sql.Dataset.withNewExecutionId(Dataset.scala:2788) 在 org.apache.spark.sql.Dataset.org$apache$spark$sql$Dataset$$execute$1(Dataset.scala:2385) 在 org.apache.spark.sql.Dataset$$anonfun$org$apache$spark$sql$Dataset$$collect$1.apply(Dataset.scala:2390) 在 org.apache.spark.sql.Dataset$$anonfun$org$apache$spark$sql$Dataset$$collect$1.apply(Dataset.scala:2390) 在 org.apache.spark.sql.Dataset.withCallback(Dataset.scala:2801) 在 org.apache.spark.sql.Dataset.org$apache$spark$sql$Dataset$$collect(Dataset.scala:2390) 在 org.apache.spark.sql.Dataset.collect(Dataset.scala:2366) 在 com.testrunner.data.processors.cloudfront.CloudfrontLogProcessorJobSpec$$anonfun$2.apply(CloudfrontLogProcessorJobSpec.scala:101) 在 com.testrunner.data.processors.cloudfront.CloudfrontLogProcessorJobSpec$$anonfun$2.apply(CloudfrontLogProcessorJobSpec.scala:88) 在 org.scalatest.OutcomeOf$class.outcomeOf(OutcomeOf.scala:85) 在 org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104) 在 org.scalatest.Transformer.apply(Transformer.scala:22) 在 org.scalatest.Transformer.apply(Transformer.scala:20) 在 org.scalatest.FlatSpecLike$$anon$1.apply(FlatSpecLike.scala:1682) 在 org.scalatest.TestSuite$class.withFixture(TestSuite.scala:196) 在 org.scalatest.FlatSpec.withFixture(FlatSpec.scala:1685) 在 org.scalatest.FlatSpecLike$class.invokeWithFixture$1(FlatSpecLike.scala:1679) 在 org.scalatest.FlatSpecLike$$anonfun$runTest$1.apply(FlatSpecLike.scala:1692) 在 org.scalatest.FlatSpecLike$$anonfun$runTest$1.apply(FlatSpecLike.scala:1692) 在 org.scalatest.SuperEngine.runTestImpl(Engine.scala:289) 在 org.scalatest.FlatSpecLike$class.runTest(FlatSpecLike.scala:1692) 在 com.testrunner.data.processors.cloudfront.CloudfrontLogProcessorJobSpec.org$scalatest$BeforeAndAfterEach$$super$runTest(CloudfrontLogProcessorJobSpec.scala:16) 在 org.scalatest.BeforeAndAfterEach$class.runTest(BeforeAndAfterEach.scala:221) 在 com.testrunner.data.processors.cloudfront.CloudfrontLogProcessorJobSpec.runTest(CloudfrontLogProcessorJobSpec.scala:16) 在 org.scalatest.FlatSpecLike$$anonfun$runTests$1.apply(FlatSpecLike.scala:1750) 在 org.scalatest.FlatSpecLike$$anonfun$runTests$1.apply(FlatSpecLike.scala:1750) 在 org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:396) 在 org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:384) 在 scala.collection.immutable.List.foreach(List.scala:381) 在 org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:384) 在 org.scalatest.SuperEngine.org$scalatest$SuperEngine$$runTestsInBranch(Engine.scala:373) 在 org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:410) 在 org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:384) 在 scala.collection.immutable.List.foreach(List.scala:381) 在 org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:384) 在 org.scalatest.SuperEngine.org$scalatest$SuperEngine$$runTestsInBranch(Engine.scala:379) 在 org.scalatest.SuperEngine.runTestsImpl(Engine.scala:461) 在 org.scalatest.FlatSpecLike$class.runTests(FlatSpecLike.scala:1750) 在 org.scalatest.FlatSpec.runTests(FlatSpec.scala:1685) 在 org.scalatest.Suite$class.run(Suite.scala:1147) 在 org.scalatest.FlatSpec.org$scalatest$FlatSpecLike$$super$run(FlatSpec.scala:1685) 在 org.scalatest.FlatSpecLike$$anonfun$run$1.apply(FlatSpecLike.scala:1795) 在 org.scalatest.FlatSpecLike$$anonfun$run$1.apply(FlatSpecLike.scala:1795) 在 org.scalatest.SuperEngine.runImpl(Engine.scala:521) 在 org.scalatest.FlatSpecLike$class.run(FlatSpecLike.scala:1795) 在 com.testrunner.data.processors.cloudfront.CloudfrontLogProcessorJobSpec.org$scalatest$BeforeAndAfterAll$$super$run(CloudfrontLogProcessorJobSpec.scala:16) 在 org.scalatest.BeforeAndAfterAll$class.liftedTree1$1(BeforeAndAfterAll.scala:213) 在 org.scalatest.BeforeAndAfterAll$class.run(BeforeAndAfterAll.scala:210) 在 com.testrunner.data.processors.cloudfront.CloudfrontLogProcessorJobSpec.run(CloudfrontLogProcessorJobSpec.scala:16) 在 org.scalatest.tools.Framework.org$scalatest$tools$Framework$$runSuite(Framework.scala:314) 在 org.scalatest.tools.Framework$ScalaTestTask.execute(Framework.scala:480) 在 sbt.TestRunner.runTest$1(TestFramework.scala:76) 在 sbt.TestRunner.run(TestFramework.scala:85) 在 sbt.TestFramework$$anon$2$$anonfun$$init$$1$$anonfun$apply$8.apply(TestFramework.scala:202) 在 sbt.TestFramework$$anon$2$$anonfun$$init$$1$$anonfun$apply$8.apply(TestFramework.scala:202) 在 sbt.TestFramework$.sbt$TestFramework$$withContextLoader(TestFramework.scala:185) 在 sbt.TestFramework$$anon$2$$anonfun$$init$$1.apply(TestFramework.scala:202) 在 sbt.TestFramework$$anon$2$$anonfun$$init$$1.apply(TestFramework.scala:202) 在 sbt.TestFunction.apply(TestFramework.scala:207) 在 sbt.Tests$.sbt$Tests$$processRunnable$1(Tests.scala:239) 在 sbt.Tests$$anonfun$makeSerial$1.apply(Tests.scala:245) 在 sbt.Tests$$anonfun$makeSerial$1.apply(Tests.scala:245) 在 sbt.std.Transform$$anon$3$$anonfun$apply$2.apply(System.scala:44) at sbt.std.Transform$$anon$3$$anonfun$apply$2.apply(System.scala:44) at sbt.std.Transform$$anon$4.work(System.scala:63) at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228) 在 sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228) 在 sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17) 在 sbt.Execute.work(Execute.scala:237) 在 sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228) at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228) at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159) 在 sbt.CompletionService$$anon$2.call(CompletionService.scala:28) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:748) [错误] 无法运行测试 com.testrunner.data.processors.cloudfront.CloudfrontLogProcessorJobSpec: java.lang.ExceptionInInitializerError
【问题讨论】:
标签: scala unit-testing apache-spark