【发布时间】:2017-03-16 11:03:00
【问题描述】:
我使用以下 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 控制台中看到了这一点:文件夹不是文件。
每个文件夹(例如 test-3.txt)都包含一长串块文件。下图:
如何将一个简单的文本文件作为 Spark 作业的输出输出到 S3?
【问题讨论】:
标签: scala amazon-web-services apache-spark amazon-s3 amazon-emr