2017-02-09 8 views
0

私はs3バケットに存在する数値ファイルを取得しようとしています。私はチェックしようとしているSeqとしてパスのリストを持っています。私は、パスをフィルタリングしようとしていますが、エラーが続いています。ScalaのSeq [Array [String]]でフィルターをかけるには?

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]) 
+0

予想される出力とは何ですか? – Brian

+0

@Brian期待される出力は、存在しないパスの数であると考えられます。 – user3407267

+0

@nmatありがとう!それは動作します:) – user3407267

答えて

3
おそらく、分割後に平らにしたい

val filePath = files.flatMap(x=> x.split("/\\*/\\*")) 
関連する問題