我已经开始研究Hadoop了.如果我的理解是正确的,我可以处理一个非常大的文件,它会分裂到不同的节点,但是如果文件被压缩,那么文件就无法分割,而且需要由单个节点处理(有效地破坏了优势)运行mapreduce ver并行机器集群).
我的问题是,假设上述内容是正确的,是否可以手动将固定大小的块或每日块拆分大文件,压缩它们然后传递压缩输入文件列表以执行mapreduce?
我是hadoop的新手,并试图处理维基百科转储.它是一个6.7 GB的gzip压缩xml文件.我读到hadoop支持gzip压缩文件,但只能由mapper在单个作业上处理,因为只有一个映射器可以解压缩它.这似乎限制了处理.还有其他选择吗?比如将xml文件解压缩并拆分成多个块并用gzip重新压缩它们.
我从http://researchcomputing.blogspot.com/2008/04/hadoop-and-compressed-files.html上读到了关于hadoop gzip的内容.
谢谢你的帮助.
我最近一直在研究hadoop和HDFS.将文件加载到HDFS时,它通常会将文件拆分为64MB块,并在群集周围分发这些块.除非gzip文件无法执行此操作,因为无法拆分gzip文件.我完全理解为什么会这样(我不需要任何人解释为什么gzip文件不能拆分).但是为什么HDFS不能将纯文本文件作为输入并像普通文件一样拆分,然后分别使用gzip压缩每个拆分?访问任何拆分时,它只是在运行中解压缩.
在我的方案中,每个拆分都是完全独立压缩的.拆分之间没有依赖关系,因此您不需要整个原始文件来解压缩任何一个拆分.这是该补丁采用的方法:https://issues.apache.org/jira/browse/HADOOP-7076,请注意,这不是我想要的.
这似乎很基本......我错过了什么?为什么不能这样做?或者如果可以做到,为什么hadoop开发人员不会忽视这条路线?考虑到我发现有多少人想要在HDFS中分割gzip文件,这似乎很奇怪.
我发现当使用gzip压缩的输入文件时,Hadoop选择只分配一个map任务来处理我的map/reduce作业.
gzip文件超过1.4 GB,所以我希望许多映射器并行运行(就像使用非压缩文件时一样)
我有什么配置可以改进吗?
我有一个.gz格式的压缩文件,是否可以使用spark DF / DS直接读取文件?
详细信息:文件是带有制表符分隔的csv。
gzip apache-spark apache-spark-sql spark-dataframe apache-spark-dataset