[英]How to do filter on Seq[Array[String]] in Scala?
我正在尝试获取s3存储桶中存在的数字文件。 我有要检查的作为Seq的路径列表。 我正在尝试过滤路径并计数,但不断出错。
import java.net.URI
import org.apache.hadoop.fs.FileSystem
import org.apache.hadoop.fs.Path
files: Seq[String] = Vector(s3://dv-service-prod-na/output/sample/test/data/2016/12/01/*/*, s3://dv-service-prod-na/output/sample/test/data/2016/12/02/*/*, s3://dv-service-prod-na/output/sample/test/data/2016/12/03/*/*, s3://dv-service-prod-na/output/sample/test/data/2016/12/04/*/*, s3://dv-service-prod-na/output/sample/test/data/2016/12/05/*/*)
val filePath = files.map(x=> x.split("/\\*/\\*"))
val input = "s3n://dv-service-prod-na"
val missingPath = filePath.filter(x => (FileSystem.get(new URI(input), sc.hadoopConfiguration).exists(new Path(x))).equals(false)).count
错误:
console>:92: error: overloaded method constructor Path with alternatives: (x$1: java.net.URI)org.apache.hadoop.fs.Path <and> (x$1: String)org.apache.hadoop.fs.Path cannot be applied to (Array[String])
您可能想在拆分后展平:
val filePath = files.flatMap(x=> x.split("/\\*/\\*"))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.