Должны ли мы сделать операцию repartition (), если я использую стратегию динамического выделения ресурсов для spark - PullRequest
0 голосов
/ 30 апреля 2019

Мы запускаем работу Spark в Dataproc.Некоторое время мало работ застревает и не завершается.Мы должны вручную убить задание из Dataproc.

Мы подозреваем, что repartition(50) может быть проблемой, так как мы используем динамическое распределение ресурсов для заданий.

Мы определили эту конфигурацию дляИскра:

'spark.dynamicAllocation.minExecutors': 5
'spark.dynamicAllocation.enabled': 'true',
'spark.cleaner.referenceTracking.cleanCheckpoints': 'true',
'spark.rdd.compress': 'true',
'spark.locality.wait': '0s',
'spark.executor.cores': '1',
'spark.executor.memory': '3g',
'spark.eventLog.compress': 'true',
'spark.history.fs.cleaner.enabled': 'true',
'spark.history.fs.cleaner.maxAge':  '1h',
'spark.history.fs.cleaner.interval': '5m',
'spark.driver.extraClassPath': '$SPARK_HOME/jars/kafka-clients-1.1.0.jar'
self.create_rdd("/path/to/file.txt.gz")
    .repartition(50) \
    .mapPartitions(partial() \
    .groupBy(itemgetter('id'), numPartitions=NUM_PARTITIONS) \
    .mapPartitions(partial()) \
    .count()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...