繁体   English   中英

如何在Scala中对Seq [Array [String]]进行过滤?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM