[英]How to read a text file in S3 bucket from inside an AWS EMR without using spark
我需要从 EMR 集群打开位于 S3 存储桶中的常规文本文件(不是镶木地板或 CSV 文件)。 我可以使用spark.read.parquet("s3://mybucket/some_parq_file")
直接打开 CSV 或 parquet 文件
But I need to read just a regular text file from EMR cluster using java.io.File or scala.io.Source . 当我尝试时得到一个 java.io.FileNotFoundException
import scala.io.Source
val hdr = "s3://mybucket/txtfile.txt"
for (line <- Source.fromFile(hdr).getLines) {
println(line)
}
我猜大多数 AWS 设置已经使用默认凭证链和默认区域提供商链在您的 EMR 集群中配置了凭证。 这也应该适用于 AWS Lambda。 因此,要从 EMR 集群访问我的 S3 存储桶,我只需要使用 AWSS3ClientBuilder
import com.amazonaws.services.s3.AmazonS3ClientBuilder
import java.io.File
import java.nio.file.{Files, StandardCopyOption}
val bucket ="s3_bucket"
val file_in_s3 = "somefile.txt"
val dest = "/tmp/local_file.txt"
val s3 = AmazonS3ClientBuilder.defaultClient()
val stream = s3.getObject(bucket, file_in_s3).getObjectContent
Files.copy(stream, new File(dest).toPath, StandardCopyOption.REPLACE_EXISTING)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.