gpt4 book ai didi

scala - 在 EMR 上使用 Spark 写入 S3 中的文件

转载 作者:行者123 更新时间:2023-12-04 02:09:11 24 4
gpt4 key购买 nike

我使用以下 Scala 代码在 S3 中使用 AWS EMR 上的 Apache Spark 创建一个文本文件。

def createS3OutputFile() {
val conf = new SparkConf().setAppName("Spark Pi")
val spark = new SparkContext(conf)
// use s3n !
val outputFileUri = s"s3n://$s3Bucket/emr-output/test-3.txt"
val arr = Array("hello", "World", "!")
val rdd = spark.parallelize(arr)
rdd.saveAsTextFile(outputFileUri)
spark.stop()
}

def main(args: Array[String]): Unit = {
createS3OutputFile()
}

我创建了一个胖 JAR 并将其上传到 S3。然后我通过 SSH 连接到集群主机并运行代码:

spark-submit \
--deploy-mode cluster \
--class "$class_name" \
"s3://$s3_bucket/$app_s3_key"

我在 S3 控制台中看到了这一点:文件夹不是文件。

enter image description here

每个文件夹(例如 test-3.txt)都包含一长串 block 文件。下图:

enter image description here

如何将一个简单的文本文件作为我的 Spark 作业的输出输出到 S3?

最佳答案

尝试这样做:

rdd.coalesce(1, shuffle = true).saveAsTextFile(...)

我的理解是 shuffle = true 参数会导致它并行发生,因此它会输出单个文本文件,但要小心处理大量数据文件。

Here是关于手头这个问题的更多细节。

关于scala - 在 EMR 上使用 Spark 写入 S3 中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40391720/

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