我正在尝试将S3后端与自定义端点一起使用。但是,hadoop-aws@2.7.3不支持,我需要使用至少2.8.0版本。基础理由是请求按以下方式发送
DEBUG [main] (AmazonHttpClient.java:337) - Sending Request: HEAD http://mustafa.localhost:9000 / Headers:
因旧版本无法识别fs.s3a.path.style.acces"
。我希望域保持相同,即要在路径(http://localhost:9000/mustafa/...
)
我不能盲目地将aws-java-sdk
版本增加到最新版本,它会导致:
Caused by: java.lang.NoClassDefFoundError: Could not initialize class com.amazonaws.ClientConfiguration
at org.apache.hadoop.fs.s3a.S3AFileSystem.initialize(S3AFileSystem.java:182)
因此,如果我使用最新客户端将hadoop-aws
增加到2.8.0
,则会导致以下错误:
根据,我需要hadoop-aws@2.7.2
和
https://ci.apache.org/projects/flink/flink-docs-release-1.3/setup/aws.html#provide-s3-filesystem-dependency
Caused by: java.lang.IllegalAccessError: tried to access method org.apache.hadoop.metrics2.lib.MutableCounterLong.<init>(Lorg/apache/hadoop/metrics2/MetricsInfo;J)V from class org.apache.hadoop.fs.s3a.S3AInstrumentation
at org.apache.hadoop.fs.s3a.S3AInstrumentation.streamCounter(S3AInstrumentation.java:194)
我应该以某种方式从Flink中排除hadoop-common
吗?使用mvn clean install -DskipTests -Dhadoop.version=2.8.0
建立来自源代码的flink,但我希望尽可能通过maven管理它。
答案 0 :(得分:2)