2015-02-13 5 views
0

В настоящее время я использую R для проведения анализа.R Преобразование больших файлов CSV в HDFS

У меня есть большое количество файлов CSV с теми же заголовками, которые я хотел бы обработать с использованием R. Я изначально прочитал каждый файл последовательно в R и строку, связав их вместе, прежде чем проводить анализ вместе.

Количество файлов, которые необходимо читать, растет, и поэтому хранение их в памяти для выполнения манипуляций с данными становится неосуществимым.

Я могу объединить все CSV-файлы вместе без использования R и, следовательно, не хранить его в памяти. Это оставляет огромный файл CSV, чтобы преобразовать его в HDFS, чтобы иметь возможность провести соответствующий анализ? И в дополнение к этому ... или было бы целесообразнее провести анализ каждого файла csv отдельно, а затем объединить его в конце?

Я думаю, что, возможно, распределенная файловая система и использование кластера машин на амазонке для эффективного анализа.

Рассматривая rmrhere, он преобразует данные в HDFS, но, по-видимому, это не удивительно для действительно больших данных ... как бы преобразовать csv таким образом, чтобы обеспечить эффективный анализ?

+0

Что вы подразумеваете под «преобразованием его в HDFS»? Ваши '.csv' сидят на HDFS или вашей локальной файловой системе? Или вы просто пытаетесь использовать обработку MapR? Если вы можете самостоятельно обрабатывать '.csv', сделайте это. – mlegge

+0

Вы не можете преобразовать формат в файловую систему, это вздор. – piccolbo

ответ

0

Вы можете создать композитный файл csv в hdfs. Сначала вы можете создать пустую папку hdfs. Затем вы вытаскиваете каждый файл csv отдельно в папку hdfs. В конце концов, вы сможете обрабатывать папку как один файл hdfs.

Для того, чтобы вытащить файлы в hdfs, вы можете использовать терминал для цикла, пакет rhdfs или загрузить файлы в памяти и пользователя в .dfs (хотя я не рекомендую вам последний вариант). Не забудьте удалить заголовок из файлов.

Использование rmr2, я советую вам сначала преобразовать csv в собственный формат hdfs, а затем выполнить анализ на нем. Вы должны иметь дело с большими объемами данных.

0

HDFS - это файловая система, а не формат файла. HDFS фактически не обрабатывает мелкие файлы, так как обычно размер блока по умолчанию составляет 64 МБ, что означает, что любой файл от 1 до 63 МБ займет 64 МБ пространства.

Hadoop лучше всего работать с ОГРОМНЫМИ файлами! Таким образом, было бы лучше, если бы вы объединили все свои небольшие файлы в один гигантский файл на HDFS, чтобы ваш инструмент Hadoop имел лучшее время для обработки.

hdfs dfs -cat myfiles/*.csv | hdfs dfs -put - myfiles_together.csv