У меня есть 30 ГБ текстовых файлов и файлов HTML от различного исходного наложения во вложенной иерархии папок. Все эти папки находятся в моем корневом каталоге в папке, названной zipFiles. Иерархия является 20 уровнями, глубоко некоторый переходит глубже, чем другие. Я хочу связать текст ВСЕХ этих файлов в один огромный текстовый файл для использования в качестве RDD в проекте Spark. Очевидно, я должен был бы преобразовать файлы HTML в текст путем снятия HTML, форматирующего коды также.
Мой подход был бы: выполните итерации через вложенную иерархию папок (не знайте, как сделать это в ударе), разархивировали файл, если это - HTML, преобразовывают его для отправки текстовых сообщений, добавляет это к ОГРОМНОМУ результату
Проблемы, которые я вижу с этим, разряжают поршень - если я делаю все это в памяти, просто добавив текст к переменной в коде.
Если я открываю ОГРОМНЫЙ файл от диска, запишите в него и закройте файл, то я перегружаю диск, и он также будет медленно идти.
Удар, пишущий сценарий моего единственного решения, потому что это пугает меня. Я предполагаю, что мог сделать это в Python, но затем я должен знать, как разархивировать в Python и сделать HTML для отправки текстовых сообщений преобразованию также.
find
хороший инструмент, когда необходимо сделать что-то рекурсивно в каталогах. zcat может
, Мой подход был бы чем-то вроде этого:
find /home/username/zipFiles -type f -name "*.zip" -exec zcat {} \; > outputfile.txt
Пример:
$ df > testfile.txt
$ zip testArchive testfile.txt
adding: testfile.txt (deflated 54%)
$ find . -maxdepth 1 -name "*.zip" -exec zcat {} \;
Filesystem 1K-blocks Used Available Use% Mounted on
udev 1954212 4 1954208 1% /dev
tmpfs 393160 3392 389768 1% /run
/dev/sda1 115247656 82424300 26946008 76% /
none 4 0 4 0% /sys/fs/cgroup
none 5120 0 5120 0% /run/lock
none 1965792 80 1965712 1% /run/shm
none 102400 32 102368 1% /run/user
cgmfs 100 0 100 0% /run/cgmanager/fs
/dev/sdb1 30343056 48 30343008 1% /media/xieerqi/SDCZ43-032G