【问题标题】:how to serialize large file more than 5 GB to avro?如何将超过 5 GB 的大文件序列化为 avro?
【发布时间】:2021-09-13 10:36:19
【问题描述】:

我想使用 python 3.6 将一个大约 15 GB 的 xml 文件序列化到 avro 并存储在 hadoop 中。我的方法是使用 xml.minidom 在字典类型的变量中加载数据,然后将其保存到 avro 文件。虽然这对于几 kb 大小的示例 xml 文件非常有效,但我仍然可以将整个大 xml 数据存储到该变量吗?我想这种方法存在一些记忆挑战?处理这种情况的最佳方法是什么?

【问题讨论】:

  • Pyspark 应该没问题

标签: hadoop xml-parsing fastavro


【解决方案1】:

序列化的重点是不要一次加载或处理大文件。 您需要将文件拆分为更小的“块”,然后对其进行序列化。

您可以使用来自 avro.datafile 包的 Avro DataFileReader 或来自 fastavro 包的阅读器。

【讨论】:

  • 感谢您的回复。我正在使用 fastavro 包中的 writer 将数据写入 avro 文件。对于我的红色,fastavro.reader 用于读取 avro 文件,但根据您的建议,我的挑战是将大 xml 文件分成小块......这怎么做?
  • @scaleX 如果您的文件存在于 HDFS 中,那么它已经被分割成块
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-27
  • 1970-01-01
  • 2011-06-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多