IllegalArgumentException,从s3而不是hdfs指定输入/输出时错误的FS

问题描述 投票:1回答:2

我一直在一个本地集群上运行我的Spark作业,该集群具有从输入读取的hdfs并且输出也被写入。现在我已经设置了一个AWS EMR和一个S3存储桶,我有输入,我也想将输出写入S3。

错误:

用户类抛出异常:java.lang.IllegalArgumentException:错误的FS:s3:// something / input,expected:hdfs://ip-some-numbers.eu-west-1.compute.internal:8020

我尝试搜索相同的问题,并且有几个关于此问题的问题。有人建议它只用于输出,但即使我禁用输出,我也会得到相同的错误。

另一个建议是我的代码中的FileSystem有问题。以下是我的程序中输入/输出的所有出现:

第一次出现在我的自定义FileInputFormat,在getSplits(JobContext job),我实际上没有修改自己,但我可以:

FileSystem fs = path.getFileSystem(job.getConfiguration());

在我的自定义RecordReader中的类似情况,也没有修改自己:

final FileSystem fs = file.getFileSystem(job);

在我自己编写的自定义nextKeyValue()RecordReader中,我使用:

FileSystem fs = FileSystem.get(jc);

最后,当我想检测我使用的文件夹中的文件数时:

val fs = FileSystem.get(sc.hadoopConfiguration)
val status = fs.listStatus(new Path(path))

我假设问题出在我的代码中,但是如何修改FileSystem调用以支持S3的输入/输出?

amazon-web-services amazon-s3 filesystems hdfs
2个回答
© www.soinside.com 2019 - 2024. All rights reserved.