r将大型csv文件转换为hdfs

2izufjch  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(438)

我目前正在使用r进行分析。
我有大量的csv文件,所有这些文件的标题都与我想用r处理的相同。最初,我将每个文件按顺序读入r行,并在一起执行分析之前将它们绑定在一起。
需要读入的文件数量正在增长,因此将它们全部保存在内存中以对数据执行操作变得不可行。
我可以将所有的csv文件组合在一起,而不需要使用r,因此不会将其保存在内存中。这就留下了一个巨大的csv文件,将其转换为hdfs是否有意义,以便能够进行相关的分析?除此之外……或者对每个csv文件分别进行分析,然后在最后合并,更有意义?
我想也许是一个分布式文件系统,并使用amazon上的一组机器来高效地执行分析。
看着 rmr 在这里,它将数据转换为HDF,但显然对于真正的大数据来说并不惊人…如何将csv转换为一种能够进行高效分析的方式?

qxgroojn

qxgroojn1#

hdfs是一个文件系统,而不是一种文件格式。hdfs实际上不能很好地处理小文件,因为它通常具有64mb的默认块大小,这意味着从1b到63mb的任何文件都将占用64mb的空间。
hadoop最适合处理大文件!因此,最好将所有的小文件连接到hdfs上的一个大文件中,这样hadoop工具就可以更好地处理这个文件。

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

vltsax252#

您可以在hdfs中构建一个复合csv文件。首先,可以先创建一个空的hdfs文件夹。然后,将每个csv文件分别拉入hdfs文件夹。最后,您将能够将该文件夹视为单个hdfs文件。
为了将文件拉入hdfs,您可以使用terminal for loop、rhdfs包,或者将文件加载到内存和user to.dfs中(尽管我不建议您使用最后一个选项)。记得把文件的头去掉。
使用rmr2,我建议您首先将csv转换为本地hdfs格式,然后对其执行分析。你应该能够处理大数据量。

相关问题