在 Spark 中读取大的 gz 文件
Posted
技术标签:
【中文标题】在 Spark 中读取大的 gz 文件【英文标题】:Reading large gz files in Spark 【发布时间】:2017-11-22 21:35:07 【问题描述】:我有 2 个 gzip 文件,每个文件大小约为 30GB,并编写了 spark 代码来分析它们。 spark 集群有 4 个工作节点(28GB RAM 和 4 个核心)和 2 个头节点(64GB RAM)。
我正在使用sc.textFile(histfile,20)
来读取这 2 个 gzip 文件并将它们并行化。这项工作分为 3 个阶段 - reduceByKey
、reduceByKey
和 saveAsTextFile
。由于有 2 个文件,目前只有 2 个工作人员在使用。
历时4个多小时,第一阶段仍未完成。 当每个 gzip 文件大小为 100GB-200GB 时,运行 spark 作业的正确方法是什么。
【问题讨论】:
【参考方案1】:gzip 文件不可拆分,因此您的第一阶段将生成两个地图任务,并且第一阶段需要很长时间才能通过。
请在第二阶段之前重新分区以获得良好的分布以减少任务。
【讨论】:
谢谢,num.executor.instances设置为20。sc.textFile(file,numpartition)
不分区实现并行吗?
Spark 的输入格式来自 Hadoop。 numpartition 仅在可拆分文件的情况下生效。在您的情况下,没有拆分,因此 numpartitions 没有任何用处。您可以查看阶段 1 中的 num 任务以进行验证。以上是关于在 Spark 中读取大的 gz 文件的主要内容,如果未能解决你的问题,请参考以下文章
(PY)Spark:如何读取扩展名为“.gz”的“.txt”文件