将S3连接器与Cloud Dataproc一起使用时的java.lang.VerifyError

时间:2015-11-06 18:50:42

标签: hadoop apache-spark google-cloud-platform google-cloud-dataproc

我正在尝试将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一起使用?

1 个答案:

答案 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"