У меня Apache Spark задание запущено на AWS EMR service. Он читает текстовый файл с доменами из корзины S3 и выполняет некоторую обработку. Входной файл для доменов 10 КБ имеет размер около 250 КБ.
При запуске задания создаются только 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
...