Где Apache Spark выполняет сжатие на выходе?

#azure #apache-spark #apache-spark-sql #azure-blob-storage

Вопрос:

У нас есть задание Spark, которое выполняется в автономном кластерном режиме и считывает данные из HDFS, сжимает их с помощью нашего пользовательского компонента компрессора и записывает .zip файл в хранилище больших двоичных объектов Azure. Наши файлы Spark и HDFS размещаются в одном и том же центре обработки данных(on-prem).

Например, Искра работу является значение 8 ГБ файл из локальной файловой системы HDFS и создание 3 ГБ .zip на хранилище BLOB-объектов Azure, в этом случае, нет искры копия 8 ГБ файла в хранилище BLOB-объектов Azure, а затем сжать его до 3 ГБ .zip файл, или совсем компрессии произойдет исполнитель/работник узлов и только сжатые данные (3 ГБ) будет отправлен в хранилище BLOB-объектов Azure? Я хотел понять объем передачи данных, который происходит в моем случае между частным хранилищем в Azure, это 3 ГБ или 8 ГБ?

Ниже приведен фрагмент кода,

 sparkSession
      .read
      .schema(getInputSchema)
      .option("escape", """)
      .option("quote", """)
      .csv(hdfsPath)
      .write
      .repartition(1)
      .option("escape", """)
      .option("quote", """)
      .option("header", "true")
      .option("compression", "com.explore.compress.CustomZipCodec")
      .partitionBy("colum1")
      .csv(azureBlobPath)
 

Просто чтобы добавить, мы используем apache-spark-2.3.x .

Комментарии:

1. Можете ли вы принять ответ или указать, почему нет? Тнх

Ответ №1:

Сжатие является программным и будет происходить на Рабочих через Исполнителя. Таким образом, на prem и 3 ГБ перенесены в azure.