0

我正在尝试将S3 连接器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 结合使用?

4

1 回答 1

1

出现此问题是因为Apache HttpComponentsS3 连接器和Google BigQuery Hadoop 连接器之间存在版本冲突。这是应该使用 Google BigQuery 连接器解决的问题。

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

#!/bin/bash
"rm /usr/lib/hadoop/lib/bigquery-connector-0.7.2-hadoop2.jar"
于 2015-11-06T18:50:41.600 回答