#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.