首页 > 解决方案 > AWS EMR Spark 文件拆分

问题描述

我有一个在 AWS EMR 服务上运行的 Apache Spark 作业。它从 S3 存储桶中读取带有域的文本文件,并进行一些处理。10K 域的输入文件大小约为 250Kb。

当我运行作业时,只创建了 2 个任务。而且无论我使用什么集群大小,它都不会并行运行它们。

读取输入文件的代码示例:

val conf = new SparkConf().setAppName(appName)
val sc = new SparkContext(conf)
val spark = SparkSession.builder.appName(appName).getOrCreate

val domains = sc.textFile("s3://bucket/file.txt")

我发现有一个fs.s3.block.size选项可以控制文件读取拆分(默认值大于我的输入文件)。但我找不到应用它的地方。尝试了下一个配置:

[
  {
    "classification": "emrfs-site", 
    "properties": {"fs.s3.block.size":"20480"}, 
    "configurations": []
  }
]

但它没有任何效果。

我可以使用什么配置来增加输入文件的 Spark 任务?

AWS EMR 版本 5.29.0

输入文件示例:

domain1
domain2
domain3
...

标签: amazon-web-servicesapache-sparkamazon-emr

解决方案


推荐阅读