В моем проекте есть требование обрабатывать несколько файлов сообщений .txt с использованием PySpark.Файлы перемещаются из локального каталога в путь HDFS (hdfs: // messageDir / ..) с использованием пакетов, и для каждого пакета я мог видеть несколько тысяч файлов .txt, а их общий размер составляет около 100 ГБ.Почти все файлы имеют размер менее 1 МБ.
Могу ли я узнать, как HDFS хранит эти файлы и выполняет разбиение?Поскольку каждый файл имеет размер менее 1 МБ (меньше, чем размер блока HDFS 64/128 МБ), я не думаю, что произойдет какое-либо разделение, но файлы будут реплицированы и сохранены в 3 разных узлах данных.
Когда я используюSpark для чтения всех файлов в каталоге HDFS (hdfs: // messageDir / ..) с использованием подстановочных знаков, таких как * .txt, как показано ниже: -
rdd = sc.textFile('hdfs://messageDir/*.txt')
Как Spark читает файлы и выполняет разделениепотому что HDFS не имеет разделов для этих маленьких файлов.
Что если размер моего файла увеличится за определенный промежуток времени, и для каждого пакета будет получен объем небольших файлов по 1 ТБ?Может кто-нибудь сказать мне, как это можно сделать?