0

我目前正在使用 R 进行分析。

我有大量的 CSV 文件,它们都具有我想使用 R 处理的相同标题。我最初将每个文件顺序读入 R 并将它们绑定在一起,然后再一起执行分析。

需要读入的文件数量正在增长,因此将它们全部保存在内存中以对数据进行操作变得不可行。

我可以在不使用 R 的情况下将所有 CSV 文件组合在一起,因此不会将其保存在内存中。这留下了一个巨大的 CSV 文件,将其转换为 HDFS 是否有意义,以便能够进行相关分析?除此之外......或者单独对每个csv文件进行分析然后最后合并它会更有意义?

我在想可能是一个分布式文件系统,并在亚马逊上使用一组机器来有效地进行分析。

rmr 这里,它将数据转换为 HDFS,但显然对于真正的大数据来说并不令人惊讶......如何以一种允许有效分析的方式转换 csv?

4

2 回答 2

0

您可以将复合 csv 文件构建到 hdfs 中。首先,您可以先创建一个空的 hdfs 文件夹。然后,将每个 csv 文件分别拉入 hdfs 文件夹。最后,您将能够将该文件夹视为单个 hdfs 文件。

为了将文件拉入 hdfs,您可以使用终端 for 循环、rhdfs 包,或者将文件加载到内存中并将用户加载到 .dfs(尽管我不建议您使用最后一个选项)。请记住从文件中删除标题。

使用 rmr2,我建议您先将 csv 转换为原生 hdfs 格式,然后对其进行分析。您应该能够处理大数据量。

于 2015-02-13T18:08:06.823 回答
0

HDFS 是文件系统,而不是文件格式。HDFS 实际上并不能很好地处理小文件,因为它通常具有 64MB 的默认块大小,这意味着从 1B 到 63MB 的任何文件都将占用 64MB 的空间。

Hadoop 最适合处理巨大的文件!因此,您最好将所有小文件连接到 HDFS 上的一个大文件中,这样您的 Hadoop 工具应该有更好的时间处理能力。

hdfs dfs -cat myfiles/*.csv | hdfs dfs -put - myfiles_together.csv
于 2015-02-13T22:28:06.113 回答