我正在尝试将S3 connectorGoogle Cloud Dataproc一起使用,并且遇到了java.lang.VerifyError。这似乎发生在我尚未修改的全新群集上。这是一个例子:

$ hadoop fs -ls s3://<my-bucket>/
Exception in thread "main" java.lang.VerifyError: Cannot inherit from final class
    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)
    ... (truncated stack trace) ...
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)
    at org.apache.hadoop.fs.FsShell.main(FsShell.java:340)

如何解决此问题并将S3连接器与Cloud Dataproc一起使用?

最佳答案

发生此问题的原因是S3锥与Google BigQuery Hadoop connector之间存在Apache HttpComponents版本冲突。这是应该使用Google BigQuery连接器修复的问题。

同时,您可以删除BigQuery连接器作为修复程序。这将启用S3连接器的使用,但也将禁用BigQuery和Cloud Dataproc的使用。要删除BigQuery连接器,请在创建Cloud Dataproc集群时使用initialization action。这是一个示例初始化操作,该操作将删除BigQuery连接器。

#!/bin/bash
"rm /usr/lib/hadoop/lib/bigquery-connector-0.7.2-hadoop2.jar"

关于hadoop - 将S3连接器与Cloud Dataproc一起使用时的java.lang.VerifyError,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33573643/

10-11 10:25