我正在尝试将S3 connector与Google 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/