gpt4 book ai didi

Scala代码不获取s3文件

转载 作者:行者123 更新时间:2023-12-04 18:37:18 25 4
gpt4 key购买 nike

我正在尝试运行 EMR 烫伤作业,假设 Scala 代码获取位于 S3 存储桶中的文本文件的内容。 scala.io.source库弄乱了 S3 路径的正确位置。

我将参数 runidfile 提供给 EMR 作业:

--runidfile s3://my-bucket/input.txt

scala 代码执行以下操作:
val runid_path = args("runidfile")
val runid = Source.fromFile(runid_path).getLines().mkString

代码不知何故不接受 S3 路径中的“//”,我得到一个错误:

Caused by: java.io.FileNotFoundException: s3:/my-bucket/input.txt (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.(FileInputStream.java:146)
at scala.io.Source$.fromFile(Source.scala:90)
at scala.io.Source$.fromFile(Source.scala:75)
at scala.io.Source$.fromFile(Source.scala:53)
at com.move.scalding.userEvents.RecommenderValidator.(RecommenderValidator.scala:37)



有什么解决方案或解决方法吗?我尝试使用 Source.fromURL ,但 S3 不是一个有效的协议(protocol),所以它不接受它。

最佳答案

scala.io.Source库并不意味着直接从 Amazon S3 访问文件。为此,您需要另一个库。

您可以使用官方Amazon S3 Java Library .这是一些示例代码(从 this question and its answers 一起复制)

val credentials = new BasicAWSCredentials("myKey", "mySecretKey")
val s3Client = new AmazonS3Client(credentials)
val s3Object = s3Client.getObject(new GetObjectRequest("my-bucket", "input.txt"))
val myData = Source.fromInputStream(s3Object.getObjectContent())

val runid = myData.getLines().mkString

关于Scala代码不获取s3文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32620130/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com