【发布时间】:2018-04-18 17:01:20
【问题描述】:
如何在读取之前检查 S3 目录是否存在?
我正在尝试这个,这里给出http://bigdatatech.taleia.software/2015/12/21/check-if-exists-a-amazon-s3-path-from-apache-spark/
import org.apache.hadoop.fs.{FileSystem, Path}
import org.apache.hadoop.conf.Configuration
val fs = FileSystem.get(new Configuration())
fs.listStatus(new Path("s3://s3bucket/2017/10/31/*/*/"))
但收到此错误
Wrong FS: s3://s3bucket/2017/10/31/*/*, expected: hdfs://ip-172-31-55-167.ec2.internal:8020
我可以使用它的确切路径检查确切的文件是否存在, 但我必须使用它不支持的通配符,例如“s3://s3bucket/2017/10/31/ */ *”。
检查了这个 StackOverflow 问题:Spark : Read file only if the path exists,但它与我的用例无关。
【问题讨论】:
-
使用
fs.globStatus -
也可以试试
FileSystem.get(new java.net.URI("s3://s3bucket") )或类似的东西。我也相信 Hadoop 提供了一个专用的 API 来处理 S3 FS -
试过了,还是一样的错误
java.lang.IllegalArgumentException: Wrong FS: s3://myS3Bucket/2017/10/31, expected: hdfs://ip-172-31-55-167.ec2.internal:8020
标签: scala amazon-web-services apache-spark amazon-s3