我目前正在使用R进行分析。
我有大量的CSV文件都有我想用R处理的相同标题。我最初将每个文件按顺序读入R并将它们绑定在一起然后再一起进行分析。
需要读入的文件数量正在增长,因此将它们全部保存在内存中以对数据进行操作变得不可行。
我可以将所有CSV文件组合在一起而不使用R,因此不会将其保留在内存中。这留下了一个巨大的CSV文件将其转换为HDFS有意义,以便能够进行相关分析?除此之外...还是更有意义的是分别对每个csv文件进行分析,然后在最后将它组合起来?
我想这可能是一个分布式文件系统,并使用亚马逊上的一组机器来有效地进行分析。
查看rmr
here,它将数据转换为HDFS,但显然对于真正的大数据来说并不令人惊讶......如何以一种允许有效分析的方式转换csv?
答案 0 :(得分:0)
您可以在hdfs中构建复合csv文件。首先,您可以先创建一个空的hdfs文件夹。然后,将每个csv文件分别拉入hdfs文件夹。最后,您将能够将该文件夹视为单个hdfs文件。
为了将文件拉入hdfs,您可以使用终端for循环,rhdfs包,或者将文件加载到内存中,将用户加载到.dfs(尽管我不建议你使用最后一个选项) 。请记住从文件中删除标题。
使用rmr2,我建议您先将csv转换为本机hdfs格式,然后对其进行分析。您应该能够处理大数据量。
答案 1 :(得分:0)
HDFS是一种文件系统,而不是文件格式。 HDFS实际上不能很好地处理小文件,因为它通常具有64MB的默认块大小,这意味着从1B到63MB的任何文件都将占用64MB的空间。
Hadoop最适合处理巨大的文件!因此,最好将所有小文件连接到HDFS上的一个巨型文件中,以便Hadoop工具能够更好地处理。
hdfs dfs -cat myfiles/*.csv | hdfs dfs -put - myfiles_together.csv