在Hadoop2.0中处理300多万个小型文本文件



我正在为以下问题语句寻找解决方案(在HADOOP 2.2+版本中)。

问题说明:

我们每天需要处理300多万个文件。我们是感兴趣的是捕获文件名以及文件中的数据。如何以最有效的方式处理这些数据?

我知道"CombineFileInputFormat"、"MultiFileInputSplit"one_answers"HAR文件布局",但我不确定哪一个在性能方面会更好。

如果你知道还有其他更好的选择,请分享。

"处理"或"捕获"是什么意思?由于在所提供的上下文中,这几乎意味着任何事情,我会故意假设删除文件将满足您的要求(尽管可能不符合),这样我就可以说明当提供的信息不足时会发生什么。

因此,基于这个目的,为了回答您的问题,处理所有数据文件的最有效方法是删除所有数据文件。这将"捕获"您的所有文件,包括文件名和数据。使用hadoop,这将是:

hadoop fs -rm -r /PATH/TO/FILES/TO/DELETE

但是,根据文件存储的位置和方式,您可能需要使用不同的方法来删除文件,例如:

TRUNCATE TABLE [tableName]

(如果您使用的是SQL数据库)

或:

rm -rf /path/to/files

(如果在本地linux文件系统上)

如果这个答案不能解决你当前的问题,那么请更具体地说明你想做什么,因为你的问题不明确。欢迎使用堆栈溢出。我们想帮忙,但我们无法理解你的想法。

以下是需要澄清的事项:

什么是"过程">"过程"一词可以有任何含义。试图连接文件?是否根据某些规则连接某些文件?计算聚合?过滤掉某些数据?加入数据?执行这些操作的组合?是否需要对文件进行重复数据消除或验证?操作是批量操作还是流操作?如果您正在考虑使用Hadoop,我希望您不是在处理流操作。

文件类型是什么,数据是什么它们是文本文件吗?二进制文件?Parquet文件?XML文件?JSON?CSV文件?它们是加密的吗?它们可能包含垃圾数据吗?如果它们都只是符号链接呢?如果不清楚文件/数据由什么组成,我们不知道如何比压缩或删除之类的通用操作更具体地"处理"文件。您对"HAR"规范的评论表明,这些数据与监控有关。然而,你问的是,这是否是正确的文件格式,但没有数据的细节或示例,也没有需要对数据进行什么处理,也没有以最有效的方式解决所有可能的问题的文件格式。(否则,任何人都只能使用一种文件格式。)

什么是"捕获">是否需要将数据保存到数据库中?SQL数据库?HBase?像DynamoDB这样的NoSQL数据库?是否需要将"捕获"的数据映射到另一个文件中?文件是否需要转换为JSON这样的结构化格式?操作是否需要输出特定的数据,如镶木地板文件?根据操作的内存需求,使用Spark或PySpark而不是Hadoop可能会获得100倍的加速。但我们需要更多的信息来更准确地提出这样的建议。确保将正确的技术用于正确的目的。

什么是"高效">"高效"是指算法运行时吗?这取决于需要计算的实际过程。或者"高效"是指内存还是存储?同样,这一点尚不清楚。

此外,在未来,我们还需要更多关于细节的上下文例如,如果提到Hadoop的特定版本,我们需要知道Hadoop的具体版本可能如何或为什么相关。据我们所知,Hadoop可能是一个完全不适合处理这么多文件的工具,因为例如Spark或Flink可能更合适。或者Elasticsearch。或者可能是图形技术。或者亚马逊Kinesis与Lambda。我们需要更多的信息来提出具体建议。

关于如何在此处提出有效的堆栈溢出问题,还有其他指南:https://stackoverflow.com/help/how-to-ask如果这个回答帖子看起来很苛刻,我很抱歉,但我建议你接受你需要在问题中提供更多细节的事实,并写一个新问题,让你重新审视。

最新更新