hadoop - 将 S3 连接器与 Cloud Dataproc 结合使用时出现 java.lang.VerifyError

标签 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 结合使用?

最佳答案

出现此问题是因为 S3 连接器和 Google BigQuery Hadoop connector 之间的 Apache HttpComponents 版本冲突.这是应该使用 Google BigQuery 连接器修复的问题。

与此同时,您可以移除 BigQuery 连接器作为修复。这将启用使用 S3 连接器,但也会禁用将 BigQuery 与 Cloud Dataproc 结合使用。要删除 BigQuery 连接器,请使用 initialization action创建 Cloud Dataproc 集群时。下面是一个示例初始化操作,它将删除 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/

相关文章:

google-cloud-platform - BigQuery 中消耗的时段时间

java - Hadoop:带有自定义输入格式的 NullPointerException

hadoop - 您如何设置具有不同批处理持续时间的多个 Spark Streaming 作业?

performance - Kafka + Spark 可扩展性

java - 如何在 Java 中使用 Flatmap 和个性化对象

java - Spark从cassandra获取ttl列

docker - 使用 Google Run Cloud 尝试使用 Gitlab CI 并失败

mysql - 如何使用 Google Container Engine 与 Google Cloud SQL 连接?

hadoop - HDFS 文件 block 在两节点集群中的分布

hadoop - 在我的笔记本电脑上使用虚拟机设置多节点 Hadoop 集群