编辑原来的答案实际上是错误的。当然,“classpath first”属性在某些情况下很有用,但在本例中并不有用。谢谢你的投票,但这是不配的。
Java语言lang.NoSuchMethodError:org。阿帕奇。拼花地板语义版本。(IIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)在组织中。阿帕奇。拼花地板腐败统计
您正在使用Spark 2.1.0,它捆绑了Parket V1.8.1,它在包org.apache.parquet
中定义了它的类。
您的Hadoop发行版似乎来自Cloudera,并且(例如)CDH 5.10捆绑了Parquet V1.5.0,它在package中定义了它的类。
unzip -l $SPARK_HOME/jars/parquet-column-1.8.1.jar | grep CorruptStatistics.class
3507 07-17-2015 13:56 org/apache/parquet/CorruptStatistics.class
unzip -l /opt/cloudera/parcels/CDH/jars/parquet-common-1.5.0-cdh5.10.0.jar | grep SemanticVersion.class
5406 01-20-2017 11:57 parquet/SemanticVersion.class
所以这些版本显然是不兼容的。
编辑时应确保它们不相互干扰,因为软件包不同。
默认情况下,在Thread下运行Spark executors时,类路径以随机顺序包含来自两个版本的Parquet的JAR,结果是灾难性的。
解决方法:确保您的Spark JAR在类路径中优先于
“NoSuchmetodError”抱怨它在运行时找不到编译时存在的方法。
这适用于类SemanticVersion
和没有名称的方法——这显然是错误的,即使是构造函数也应该用标记。
方法详细信息:参数
(int, int, int, String, String, String)
和返回类型val
。请参阅该帖子以供参考。
好的,让我们假设类CorruptStatistics是通过调用新的语义版本(1,2,3,“a”,“b”,“c”)
编译的,该版本在编译时有效,但由于某种原因,当编译语义版本时,该构造函数不存在(版本不匹配?!)
这太疯狂了,因为“官方”源代码(参见“parquet-列”和“parquet-public”下的apache GIT repo)从来没有显示过这样的构造函数的痕迹,永远不会。实际上,腐败统计
是一个错误修复,用于与一些有缺陷的镶木地板格式兼容,SemanticVersion
只有两个构造函数,其中没有字符串。
V1.8.1的一些“非官方”(但更容易阅读)源代码可以在这里和这里找到。
一句话:所有这些都没有意义,除非
为了解决这个问题,我强烈建议您检查所有在运行时可能出现在纱线类路径中的罐子,包括您的自定义罐子Spark JARs Cloudera CDH JARs Cloudera extra parcels JARs,搜索任何腐败统计信息的引用。class--您有一个示例unzip-l | grep命令;把它绕成一个圈,准备好迎接惊喜。
问题内容: 这并不是一个问题。相反,当您使用外部API进行开发并且android.jar出现在Android中时,这是一个常见问题,它不会复制到您的项目中! 问题答案: 在搜索了各种论坛,Google和stackoverflow之后,我似乎自己得到了一个解决方案,并想到了共享它的想法。 每当您链接外部库时,最好通过创建一个/ lib文件夹并将其放在.jar文件夹中来进行链接(将其复制到文件中而不链
我试图在本地打开一个浏览器来调试我在PhpStorm中编写的内容。然而,不管我安装了什么,PhpStorm总是抱怨“PHPCGINotFound”问题。 我已使用PHP 5.6安装了自制软件
我在翻关于spring boot项目的例子。我已经通过maven编译并创建了一个jar文件,但是在运行尝试时出现了一个错误。 https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-simple 错误: java-jar spring-boot-sample-
我们在AKS有一个阿帕奇点火集群。我们设置了3个节点的ignite集群。我可以看到这3个节点显示在sys.nodes和sys.baseline_nodes中。下面是1个节点的缓存配置- 但是为什么日志文件中充满了下面的消息呢? [16:56:11,649][Strice][Grid-Nio-Worker-TCP-Comm-0-#23][TcpCommunicationSpi]无法处理选择器键[SE
我收到此错误: 所有com.android.support库必须使用完全相同的versionspecification(混合版本会导致runtme崩溃)。找到版本27.1.1、26、1.0。示例包括com.android.support:animated-vector-drawable:27.1.1和android.supoirt:customTabs:26.1.0
我正在尝试使用grails-rest-client-builder,但是我在安装插件时遇到了麻烦。 我确实看到了这篇文章:Grails导入插件在Grails中失败(rest Plugin:compile“:rest-client-builder:2.0.0”和“:rest0.8”),但我认为这个问题是不同的。谢谢,-J