【问题标题】:How to use saveAsTextFile on AWS?如何在 AWS 上使用 saveAsTextFile?
【发布时间】:2016-07-16 06:24:06
【问题描述】:

我希望通过 println 得到一些东西,但是通过使用 AWS,它可能无法正常工作,如何使用“saveAsTextFile”将 println 的内容保存为 AWS 上的文件? println的原始内容如下:

println("\n[ First output is ]")
output1.foreach(a => println("(" + a +"," + titles(a - 1) + ")"));
println("\n[ Second output us ]")
output2.foreach(a => println("(" + a +"," + titles(a - 1) + ")"));

output1 和 output2 都是由数字组成的列表。标题也是一个列表。 谢谢。

【问题讨论】:

  • 我不知道你在问什么。 “使用 AWS”是指您在 EC2 实例上运行代码并且想要保存到实例存储中吗?或者将一些东西保存到 S3 存储中?
  • 我在您的问题中没有看到任何关于 AWS 的具体内容。
  • 如果在本地机器上,我可以通过在命令行中使用 > output.txt 将打印输出的内容保存到文件中,但是在 AWS EC2 上运行,它仍然有效吗?如果在 AWS EC2 上运行,我只希望将打印内容保存到文件中。

标签: scala amazon-web-services apache-spark


【解决方案1】:

如果两者都是Lists,你可以将它们转换成RDDs,使用SparkContext的方法parallelize

val rdd1 = sc.parallelize(List("[ First output is ]") ++ output1.map(a => "(" + a + "," + titles(a - 1) + ")"))
val rdd2 = sc.parallelize(List("[ Second output is ]") ++ output2.map(a => "(" + a + "," + titles(a - 1) + ")"))

在此之后,您可以在所需的 s3 路径中使用saveAsTextFile

rdd1.saveAsTextFile("s3://yourAccessKey:yourSecretKey@/out1.txt")
rdd2.saveAsTextFile("s3://yourAccessKey:yourSecretKey@/out2.txt")

我推荐你阅读这篇博客,它可能会帮助你了解关于 S3Apache-Spark Writing s3 data with Apache Spark

的重要信息

【讨论】:

  • 我可以将示例中的“println("\n[ First output is ]")”写入文件吗?谢谢。
  • 让我解释一下,您将每一行转换为一个 RDD 条目,因此您可以将该行添加到列表中。问题是 RDD 倾向于是一致的,这意味着它们在所有条目中具有相同的结构。
  • 我看到你把它们分开保存了,但是你知道如何将像 println("\n[ First output is ]") 的内容这样的字符串添加到文件中吗?
  • 我告诉过你,字符串只是被认为是 RDD 的另一个条目。但是我将该行添加到 RDD。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-19
  • 2020-04-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多