Искровая трансляция не сохраняется в памяти исполнителей

Maor Aharon спросил: 13 октября 2017 в 06:03 в: scala

Я использовал spark-shell в EMR - Spark версии 2.2.0 / 2.1.0. Когда я пытался транслировать простой объект (мой CSV-файл содержит только 1 столбец и его размер меньше 2 МБ), я заметил, что он не сохраняется в каждой памяти исполнителя и только в памяти драйвера, хотя это должно быть так, как это предлагается в документации https://jaceklaskowski.gitbooks.io/mastering-apache-spark/spark-TorrentBroadcast.html

Прикрепленный экран печати перед трансляцией (т.е. sc.broadcast (arr_collected)) и после трансляции, которая показывает мой вывод. Кроме того, я проверил использование машинной памяти работника и то же, что и в пользовательском интерфейсе Spark, оно не меняется после трансляции.

1 - печать экрана перед трансляцией

2 - печать экрана после трансляции

Прикрепленный журнал для процесса вещания после добавления 'log4j.logger.org.apache.spark.storage.BlockManager = TRACE', как предложено здесь -https://jaceklaskowski.gitbooks.io/mastering-apache- spark / spark-blockmanager.html

3 - запись журнала трансляции экрана

Ниже приведен код -

val input  = "s3://bucketName/pathToFile.csv"
val df = spark.read.format("com.databricks.spark.csv").option("header", "true").option("delimiter", ",").load(input)
val df_2 = df_read_for_bc.withColumn("is_exist",lit("true").cast("Boolean"))
val arr_collected = df_2.collect()val broadcast_map_fraud_locations4 = sc.broadcast(arr_collected)

Есть идеи?

0 ответов