当前位置: 首页 > 知识库问答 >
问题:

Jackson 2.8版的Spark应用程序与Apache Spark 1.6不兼容

谷梁浩思
2023-03-14

我有一个使用Jackson 2.8 API的Spark应用程序,我使用Spark 1.6作为应用程序中提供的(范围)依赖项pom.xml.当我尝试在集群模式下部署Spark应用程序时,Spark 1.6构建的Jackson旧版本被选中导致应用程序失败。

我厌倦了通过“-jars”选项提供2.8 Jackson jar,构建包含最新Jackson依赖项的Uber应用程序jar,以及在执行器/驱动html" target="_blank">程序上提供userClasspathFirst选项,这些选项都没有帮助。

我将最新的Jackson jar放置在同一位置的所有Spark工作节点中,并添加了执行器类路径选项的路径-只有在这个选项中,才会选择最新的Jackson版本。在此解决方案中,每次我向应用程序添加新的工作节点时,我都必须放置最新的Jackson,这是我发现的缺点。如果有人有更好的解决方案,请告诉我。

共有1个答案

阳建弼
2023-03-14

你可以试着遮蔽杰克逊。例如,在maven中,你会做这样的事情:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <shadedArtifactAttached>true</shadedArtifactAttached>
                        <relocations>
                            <relocation>
                                <pattern>com.fastxml.jackson</pattern>
                                <shadedPattern>com.mycompany.shaded.com.fastxml.jackson</shadedPattern>
                            </relocation>
                        </relocations>
                        <finalName>FatJarName</finalName>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

其想法是,它将基本上重命名jackson软件包,并更改您使用它的内部访问权限。然后提交新的脂肪罐。

注意:这并不总是有效(特别是如果您使用反射访问jackson,它可能指向错误的版本)。

 类似资料:
  • 我刚刚发布了我的应用程序为穿戴设备,它的手表脸,没有任何UI为电话应用程序。我上传到了Google Play。但它说这个应用程序与你的设备不兼容。到所有用户或设备。 有人知道吗?

  • 我在市场上有一个Android应用程序,支持多个APK。现在它不支持屏幕分辨率为1080x1920、密度为441dp的星系S4;i、 e.该应用程序未在Galaxy S4中显示。原因可能是什么???请帮忙???? 清单中使用的过滤器(适用于支持Galaxy S3(屏幕大小4.8)、分辨率为720x1280的Galaxy Nexus(屏幕大小4.65)):兼容屏幕屏幕android:screenSi

  • 我正在编写一个教会应用程序,其中我正在使用本教程使用可滑动的选项卡 但我希望我的应用程序支持Froyo及以上! AndroidManifest.xml

  • 我试图使用kafkastreams进行聚合,但得到的错误如下所示 这是我正在做的事情: 我收到的错误如下。 由以下原因引起:A 序列化程序(密钥:类型:a 序列化程序(密钥:类型:网站名称:通用序列化程序 / 值:在流配置中更改默认的 Serdes 或通过方法参数提供正确的 Serdes。在 org.apache.kafka.流.处理器.内部.sinkNode.进程 (SinkNode.java:

  • 我开发了一个基于webview的android应用程序,并对其进行了测试--运行良好,上传到了Google Play,当我去看我得到的应用程序时,这个应用程序与你所有的设备都不兼容--我有了wildfire,现在我有了Media Pad 7英寸平板电脑。这是我的清单文件

  • 我的问题是:有可能使Azure应用程序网关符合FIPS吗? 我对遵从性的理解是,SSL方法需要使用FIPS140-2加密。 null