Слияние большого набора данных самым быстрым способом

У меня большой набор данных ~ 100 ГБ с меньшими файлами csv ~ 100 000. Я хочу объединить все CSV-файлы вместе самым быстрым способом. Файлы находятся в двух разных папках.

  1. Кто-то предложил мне создать два файла с именами файлов из обеих папок и с использованием имени файла, итерации в каталоге для добавления выходных файлов вместо использования glob ls * . Как я могу добиться этого с помощью Linux. Я довольно новичок в этом, если кто-то может мне помочь, я был бы признателен.
  2. Если какой-либо другой способ, учитывая набор данных, добиться результата

  • Удаление пробелов из полей в файле с разделителями с запятой с использованием сценария оболочки
  • Поиск данных из всех файлов в папке
  • вырезать столбец int array в CSV без обрезки другого массива varchar
  • Команда unix для усечения каждой строки файла
  • Разделение CSV с многострочными ячейками
  • Я хочу динамически печатать значение из файла csv
  • Присоединение нескольких команд sed в одном скрипте для обработки CSV-файла
  • изменять ненулевые заполненные часы и минуты в 24 часа
  • 2 Solutions collect form web for “Слияние большого набора данных самым быстрым способом”

    Попробуйте что-то вроде этого:

     find /path/to/dir1 /path/to/dir2 -type f -name '*.csv' -exec cat {} + >/path/to/merged.csv 

    Обязательно не помещайте объединенный файл в любой из входных каталогов. 🙂

    Если вы правильно поняли, вы хотите создать один (100 ГБ размер?) Файл из всех ваших файлов. В этом случае кошка может сделать трюк:

     cat foo1 foo2 bar1 bar2 > newfile 

    или в вашем случае

     cat folder1/* folder2/* > newfile 

    который возьмет все файлы из folder1 и folder2 и объединит их (как текст) в новый файл. обратите внимание, что кошка просто добавляет файлы в конец (например, добавляет строки)

    Тем не менее, это сохранит старые файлы, и вам понадобится в два раза больше места, поэтому вы можете также обрабатывать их отдельно:

     for f in folder1/* folder2/* ; do cat $f >> newfile && rm $f done 

    таким образом каждый файл добавляется, а затем удаляется.

    Это то, что вы искали?

    Linux и Unix - лучшая ОС в мире.