gpt4 book ai didi

hadoop - 使用 spark 保存和处理大量小文件

转载 作者:可可西里 更新时间:2023-11-01 14:36:33 27 4
gpt4 key购买 nike

我是大数据新手!我有一些关于如何在 EMR 集群上的 spark 中处理和保存大量小文件(pdf 和 ppt/pptx)的问题。

我的目标是将数据(pdf 和 pptx)保存到 HDFS(或集群中的某种类型的数据存储中),然后从 spark 中提取此文件的内容并将其保存在 elasticsearch 或某些关系数据库中。

  1. 我读过在HDFS 中保存数据时的小文件问题。保存大量 pdf 和 pptx 文件(最大大小 100-120 MB)的最佳方法是什么?我读过有关序列文件和 HAR(hadoop 存档)的内容,但我不明白它们究竟是如何工作的,也不知道什么是最好的。

  2. 处理这些文件的最佳方式是什么?我知道有些解决方案可能是 FileInputFormat 或 CombineFileInputFormat 但我还是不知道它是如何工作的。我知道不能在单独的任务上运行每个小文件,因为集群将处于瓶颈情况。

谢谢!

最佳答案

如果您使用对象存储(如 S3)而不是 HDFS,则无需对您的文件应用任何更改或转换,您可以将它们分别作为单个对象或 blob(这也意味着它们可以使用标准工具,无需使用自定义类或代码解包或重新格式化)。然后,您可以使用 boto(适用于 s3)等 python 工具读取文件,或者如果您正在使用 wholeTextFile 或 binaryFiles 命令处理 spark,然后制作 BytesIO(python)/ByteArrayInputStream(java)以使用标准库读取它们。

2) 在处理文件时,你有项目和分区的区别。如果您有 10000 个文件,则可以创建 100 个分区,每个分区包含 100 个文件。无论如何,每个文件都需要一次处理一个,因为 header 信息是相关的,并且每个文件可能不同。

关于hadoop - 使用 spark 保存和处理大量小文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41058119/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com