Intentando leer los datos s3 del contexto de chispa java:
"mapreduce.input.fileinputformat.input.dir.recursive", "true" jsc.textFile(filePath);Estaba funcionando para mí cuando solo tengo archivos dentro de las carpetas de horas:
s3://<year>/<month>/<day>/<hour>/<files> jsc.textFile("s3://<year>/<month>/<day>");Ahora, en S3 paralelo a la carpeta de horas, también podemos tener new_folder
s3://<year>/<month>/<day>/<hour>/<files> s3://<year>/<month>/<day>/<hour>/<new_folder>/<files>Debajo del código que ignora los archivos en new_folder
jsc.textFile("s3://<year>/<month>/<day>");Probé con varias expresiones regulares, pero mi método "isPathExist" siempre devuelve falso
jsc.textFile("s3n://<year>/<month>/<day>/*/<regular_expression>");Se verificó la ruta S3 usando el método a continuación, que devuelve falso
private static boolean isPathExists(String folderPath, String bucket, String accessKey, String secret) { AWSCredentials cred = new BasicAWSCredentials(accessKey, secret); AmazonS3 s3 = new AmazonS3Client(cred); ObjectListing objectListing = s3 .listObjects(new ListObjectsRequest().withBucketName(bucket).withPrefix(folderPath)); return !objectListing.getObjectSummaries().isEmpty(); }Si desea todos los subdirectorios, utilice dos estrellas.
jsc.textFile("s3://<year>/<month>/<day>/**");Y archivos en esos directorios, una estrella más (creo)
jsc.textFile("s3://<year>/<month>/<day>/**/*");