我正在尝试将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一起使用?
答案 0 :(得分:1)
出现此问题是因为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"