将许多小文件放入HDFS以训练/评估模型



我想将一些包含数百万个小文件的大型tar.gz归档文件的内容提取到HDFS。在数据上传之后,应该可以通过路径访问归档中的单个文件,并列出它们。最直接的解决方案是编写一个小脚本,将这些归档文件提取到某个HDFS基本文件夹中。然而,由于众所周知HDFS不能很好地处理小文件,我想知道如何改进这个解决方案。以下是我目前发现的潜在方法:

序列文件
  • <
  • Hadoop档案/gh>
  • HBase

理想情况下,我希望解决方案与Spark配合良好,这意味着如果数据被直接提取到HDFS,那么使用Spark访问数据应该不会比以前更复杂。在这个领域你有什么建议和经验?


您可以将文件降落到着陆区,然后将它们处理成有用的东西。

zcat <infile> | hdfs dfs -put - /LandingData/

然后在"着陆"的数据之上构建一个表。使用Hive或Spark

然后用Parquet或ORC格式写一个新表(在新文件夹中)。

当你需要在数据上运行分析时,使用这个新表,它将表现良好,并消除小文件问题。这将使小文件问题保持在一次加载。

序列文件是处理hadoop小文件问题的好方法。