我有一个用例,我想在HDFS上上传大的gzip文本数据文件(~60GB)。我下面的代码需要大约2个小时才能以500MB的block上传这些文件。以下是伪代码。我正在检查是否有人可以帮助我减少这个时间:i)intfileFetchBuffer=500000000;System.out.println("文件获取缓冲区为:"+fileFetchBuffer);int偏移量=0;intbytesRead=-1;try{fileStream=newFileInputStream(file);if(fileName.endsWith(".gz")){stream=newGZIPInputStre
HDFS存储支持压缩格式来存储压缩文件。我知道gzip压缩不支持夹板。假设现在该文件是一个gzip压缩文件,其压缩大小为1GB。现在我的问题是:此文件将如何存储在HDFS中(block大小为64MB)从这里link我开始知道gzip格式使用DEFLATE来存储压缩数据,DEFLATE将数据存储为一系列压缩block。但我无法完全理解并寻找广泛的解释。更多来自gzip压缩文件的疑惑:这个1GB的gzip压缩文件将有多少block。它会在多个数据节点上运行吗?如何将复制因子应用于此文件(Hadoop集群复制因子为3。)什么是DEFLATE算法?读取gzip压缩文件时采用了哪种算法?我在这里
5GB的gzip文件如何读入内存并压缩?解压前是否需要将整个文件读入内存?我的问题与在Hadoop中处理gzip文件有关,它不能像处理非压缩文件那样拆分处理。bzip2呢?有什么区别吗?谢谢, 最佳答案 不需要,这5GB不需要读入内存。如果愿意,您可以一次读取一个字节,然后以这种方式解压缩。gzip、bzip2和我所知道的所有压缩格式都是流格式。您可以读取小位并连续解压缩它们,而不必在文件中倒退。(.ZIP格式的末尾有标题信息,因此解压缩程序通常从那里向后查找条目。但这不是必需的,.ZIP文件可以作为流进行压缩和解压缩。)
我有一个大约120GB的大gz文件。我想对其运行mapreduce,但由于gz文件不可分割,因此只有一个映射器能够一次处理该文件。该文件存在于hdfs和本地。我正在考虑的可能选项:1)解压那个gz文件并将其存储在hdfs中:首先,解压文件和将解压数据放入hdfs会花费太多时间。此外,我无法直接在hdfs中解压缩文件,因为hdfs没有zcat或gunzip命令。所以我必须做zcata.gz|hdfsdfsput-/path/in/hdfs。此外,这将在hdfs中占用大量空间(大约是gz的4倍)2)将文件拆分为小文件(每个大约1GB)并对其进行处理:最佳选择,但遗憾的是无法正常工作。我正在
I'mtryingtoreadalargegzipfileintohivethroughsparkruntimetoconvertintoSequenceFileformat而且,我想高效地做到这一点。据我所知,Spark只支持每个gzip文件一个映射器,就像它对文本文件一样。有没有办法改变正在读取的gzip文件的映射器数量?还是我应该选择另一种格式,如Parquet?我现在卡住了。问题是我的日志文件是类似json的数据,保存为txt格式,然后进行gzip压缩,所以为了阅读,我使用了org.apache.spark.sql.json。我看到的示例显示-将数据转换为SequenceFil
我看到很多关于将hadoopMapReduce结果输出为gzip格式或任何其他压缩格式的帖子。但是,我对hadoop-streaming如何读入(输入)压缩格式并没有太多了解。我看到一些关于使用-jobconfstream.recordreader.compression=gziphttp://mail-archives.apache.org/mod_mbox/hadoop-common-user/200907.mbox/%3C73e5a5310907141349k3329c5cua4bb58fcf103522@mail.gmail.com%3E的旧帖子做输入部分。目前,我在Ubunt
在我的HDFS上,我有一堆gzip文件,我想将其解压缩为正常格式。是否有用于执行此操作的API?或者我如何编写一个函数来执行此操作?我不想使用任何命令行工具;相反,我想通过编写Java代码来完成这项任务。 最佳答案 你需要一个CompressionCodec解压缩文件。gzip的实现是GzipCodec.你得到一个CompressedInputStream通过编解码器并使用简单的IO输出结果。像这样:假设你有一个文件file.gz//pathoffileStringuri="/uri/to/file.gz";Configuratio
我正在运行一个Spark作业,它花费了很长时间来处理输入文件。输入文件为6.8GBGzip格式,包含1.1亿行文本。我知道它是Gzip格式,所以它不可拆分,并且只有一个执行程序将用于读取该文件。作为调试过程的一部分,我决定只看看将gzip文件转换为parquet需要多长时间。我的想法是,一旦我转换为parquet文件,然后如果我在该文件上运行我的原始Spark作业,在这种情况下它将使用多个执行程序并且输入文件将被并行处理。但即使是小工作也比我预期的要花更长的时间。这是我的代码:valinput=sqlContext.read.text("input.gz")input.write.pa
我已经将一堆.gz文件加载到HDFS中,当我在它们之上创建一个原始表时,我在计算行数时看到了奇怪的行为。将gz表中的count(*)结果与未压缩表中的结果进行比较,结果相差约85%。压缩文件gz的表记录较少。有人见过这个吗?CREATEEXTERNALTABLEIFNOTEXISTStest_gz(col1string,col2string,col3string)ROWFORMATDELIMITEDLINESTERMINATEDBY'\n'LOCATION'/data/raw/test_gz';selectcount(*)fromtest_gz;result1,123,456selec
我们意识到以GZip格式归档文件以供Hadoop处理并不是一个好主意,为时已晚。GZip不可拆分,为了引用,这里是我不会重复的问题:VerybasicquestionaboutHadoopandcompressedinputfilesHadoopgzipcompressedfilesHadoopgzipinputfileusingonlyonemapperWhycan'thadoopsplitupalargetextfileandthencompressthesplitsusinggzip?我的问题是:BZip2是允许Hadoop并行处理单个存档文件的最佳存档压缩吗?Gzip绝对不是,