【问题标题】:CBORFactory NoClassDefFoundError exception in spark 3.0.0spark 3.0.0 中的 CBORFactory NoClassDefFoundError 异常
【发布时间】:2020-11-17 16:07:34
【问题描述】:

我正在使用 kinesis 并在 EMR 6.0.0 中运行 Spark 流应用程序, 它在本地运行良好,但是在部署到 AWS EMR 时它一直失败 NoClassDefFoundError异常

20/11/17 15:26:56 INFO Client: 
     client token: N/A
     diagnostics: User class threw exception: java.lang.NoClassDefFoundError: com/fasterxml/jackson/dataformat/cbor/CBORFactory
    at com.amazonaws.protocol.json.SdkJsonProtocolFactory.getSdkFactory(SdkJsonProtocolFactory.java:123)
    at com.amazonaws.protocol.json.SdkJsonProtocolFactory.createGenerator(SdkJsonProtocolFactory.java:54)
    at com.amazonaws.protocol.json.SdkJsonProtocolFactory.createGenerator(SdkJsonProtocolFactory.java:74)
    at com.amazonaws.protocol.json.SdkJsonProtocolFactory.createProtocolMarshaller(SdkJsonProtocolFactory.java:64)
    at com.amazonaws.services.kinesis.model.transform.DescribeStreamRequestProtocolMarshaller.marshall(DescribeStreamRequestProtocolMarshaller.java:52)
    at com.amazonaws.services.kinesis.AmazonKinesisClient.executeDescribeStream(AmazonKinesisClient.java:861)
    at com.amazonaws.services.kinesis.AmazonKinesisClient.describeStream(AmazonKinesisClient.java:846)
    at com.amazonaws.services.kinesis.AmazonKinesisClient.describeStream(AmazonKinesisClient.java:887)
    at com.gartner.tn.datafeed.application.PositionStreamApplicationV4.getJavaDStream(PositionStreamApplicationV4.java:240)

【问题讨论】:

  • 这个问题是如何为您解决的?

标签: java spark-streaming amazon-emr


【解决方案1】:

我遇到了完全相同的问题,我通过消除 Kinesis 对 CBOR 的依赖解决了这个问题。我不确定这是否适合您,但它对我有用。

有几种方法可以做到这一点,但是,在本地模式下运行时,我将以下代码放在流式 Spark 应用程序的主类开头;

System.setProperty(SDKGlobalConfiguration.AWS_CBOR_DISABLE_SYSTEM_PROPERTY, "true");

在集群模式下运行时,按如下方式启动您的 spark 提交;

spark-submit --deploy-mode cluster \
--conf spark.driver.extraJavaOptions='-Dcom.amazonaws.sdk.disableCbor=true' \
--conf spark.executor.extraJavaOptions='-Dcom.amazonaws.sdk.disableCbor=true' 

在集群上以客户端模式运行时,这样启动;

spark-submit --deploy-mode client \
--driver-java-options '-Dcom.amazonaws.sdk.disableCbor=true' \
--conf spark.executor.extraJavaOptions='-Dcom.amazonaws.sdk.disableCbor=true' 

这个问题让我找到了答案; Getting an AmazonKinesisException Status Code: 502 when using LocalStack from Java

【讨论】:

  • 对我来说......在集群模式下,它不尊重参数。仍然给出这个错误。
猜你喜欢
  • 2018-10-08
  • 1970-01-01
  • 2011-11-23
  • 1970-01-01
  • 2013-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多