精华内容
下载资源
问答
  • FastDFS压缩文件

    2018-01-17 14:42:00
    FastDFS压缩文件包含如下包: 1.fastdfs_client_java._v1.25.tar.gz 2.fastdfs_client_v1.24.jar 3.fastdfs-nginx-module_v1.16.tar.gz 4.FastDFS_v5.05.tar.gz 5.libfastcommon-master.zip 6.nginx-1.6.2.tar.gz
  • 原生的js压缩图片的Demo,非常的实用,我公司就用的这个来压缩问题的
  • JAVA-阿里云OSS文件下载并将文件压缩为ZIP格式保存-附件资源
  • 压缩一个文件 我们将一个文件生成一个压缩包。 <?... $filename = test.zip;...$zip = new ZipArchive();...上述代码将c:/wamp/www/log.txt文件压缩生成了test.zip,并保存在当前目录。 压缩多个文件 压缩多个文件,其
  • 解决psd文件过大问题,photoshop使用过程当中,会存储大量的历史图像数据,造成PSD文件过大,从而导致占用电脑内存过大、操作系统卡顿等问题,使用此文件可以对psd文件进行无损压缩清理,超级简单实用!...
  • 使您可以压缩和解压缩文件。 入门 查看“ 文档,以获取有关应用程序中开始使用此模块的说明。 访问Ti.Compression模块 要从JavaScript访问此模块,您需要执行以下操作: var Compression = require ( 'ti....
  • savezip 接受文件名/路径和变量数据或名称,并将数据以压缩 zip 或 gzip 格式存储在指定文件中。 如果指定的文件路径不包含扩展名,则将使用“.zip”。 数据可以是任何 Matlab 数据格式。 稍后可以使用相应的 ...
  • 文章目录一 __init__() 创建一个类文件对象二 append() 内存数据添加到zip对象三 appendfile() ...传统方法需要多次磁盘IO,性能很低,如果跳过文件存储,直接将内存的数据压缩保存,会大大减少磁盘IO,提升性能。 不

    工作中需要将大批的数据,压缩为zip存储。按照传统的处理办法需要将数据先存储到本地磁盘,再从磁盘读文件压缩成zip文件。
    传统方法需要多次磁盘IO,性能很低,如果跳过文件存储,直接将内存的数据压缩保存,会大大减少磁盘IO,提升性能。

    不需要看解析的,可以直接看最后完整的python代码

    创建一个类: InMemoryZIP(), 来处理所有的程序。

    class InMemoryZIP(object):
    

    init() 创建一个类文件对象

    	def __init__(self):
    		# create the in-memory file-like object
    		self.in_memory_zip = BytesIO()
    

    二 append() 内存数据添加到zip对象

    	def append(self, filename_in_zip, file_contents):
    		""" Appends a file with name filename_in_zip \
            and contents of file_contents to the in-memory zip.
            """
    
            # create a handle to the in-memory zip in append mode\
    		if not isinstance(file_contents, bytes):
    			file_contens = bytes(str(file_contens), encoding='utf-8')
    
    		# write the file to the in-memory zip
    		zf = zipfile.ZipFile(self.in_memory_zip, 'a', zipfile.ZIP_DEFLATED, False)
    
    		zf.writestr(filename_in_zip, file_contents)
    
    		# mark the files as having been created on Windows
            # so that Unix permissions are not inferred as 0000
    		for zfiel in zf.filelist:
    			zfile.create_system = 0
    
    		return self
    
    

    三 appendfile() 文件添加到zip对象

    	def appendfile(self, file_path, file_name=None):
    		""" Read a file with path file_path \
            and append to in-memory zip with name file_name.
            """
    
            # file_path is abs path
    		if file_name is None:
    			file_name = os.path.split(file_path)[1]
    
    
    		with open(file_path, 'rb') as f:
    			file_contents = f.read()
    			self.append(file_name, file_contents)
    
    		return self
    

    四 read() 读取zip数据流

    	def read(self):
    		""" Returns a string with the contents of the in-memory zip.
            """
    
    		self.in_memory_zip.seek(0)
    		return self.in_memory_zip.read()
    

    五 writetofile() 内存zip流保存为zip文件

    def writetofile(self, zip_filename):
    	"""
            Write the in-memory zip to a file
        """
    
    	with open(zip_filename, 'wb') as f:
    		f.write(self.read())
    
    

    六 完整版python代码

    # !user/bin/env python3
    # -*-coding : utf-8 -*-
    
    import zipfile
    from io import BytesIO
    import os
    
    
    class InMemoryZIP(object):
        def __init__(self):
            # create the in-memory file-like object
            self.in_memory_zip = BytesIO()
    
        def append(self, filename_in_zip, file_contents):
            """ Appends a file with name filename_in_zip \
            and contents of file_contents to the in-memory zip.
            """
            # create a handle to the in-memory zip in append mode\
            if not isinstance(file_contents, bytes):
                file_contents = bytes(str(file_contents), encoding='utf-8')
    
            zf = zipfile.ZipFile(self.in_memory_zip, 'a',
                                 zipfile.ZIP_DEFLATED, False)
    
            # write the file to the in-memory zip
            zf.writestr(filename_in_zip, file_contents)
    
            # mark the files as having been created on Windows
            # so that Unix permissions are not inferred as 0000
            for zfile in zf.filelist:
                zfile.create_system = 0
            return self
    
        def appendfile(self, file_path, file_name=None):
            """ Read a file with path file_path \
            and append to in-memory zip with name file_name.
            """
            if file_name is None:
                file_name = os.path.split(file_path)[1]
    
            f = open(file_path, 'rb')
            file_contents = f.read()
            self.append(file_name, file_contents)
            f.close()
            return self
    
        def read(self):
            """ Returns a string with the contents of the in-memory zip.
            """
            self.in_memory_zip.seek(0)
            return self.in_memory_zip.read()
    
        def writetofile(self, filename):
            """
            Write the in-memory zip to a file
            """
            f = open(filename, 'wb')
            f.write(self.read())
            f.close()
    
    
    if __name__ == '__main__':
    
    	pass
    
    	# contens = 'xxxxxxxxx'  # 内存数据
        # imz = InMemoryZIP()
        # imz.append('test.txt', contens)
        # imz.writetofile('test.zip')
       
    
    
    展开全文
  • Golang 工具,用于获取存储在 Amazon S3 中的文件压缩列表。 s3zipper 试图通过下载时流式传输压缩数据来最小化内存占用,而不是 a) 获取文件 b) 压缩它们,以及 c) 发送压缩数据。 安装 go get github....
  • java压缩图片文件大小

    热门讨论 2014-05-14 11:10:20
    java 开发压缩图片文件大小,2m-->200k 不是压缩宽高的
  • 这个是对压缩文件的加密和解密操作。支持zip,jar,rar三种格式的压缩加密和解密,很方便使用,欢迎大家下载,交流
  • Android 解压缩文件

    2019-06-24 17:27:02
    Android解压缩文件。Android原生的解压缩文件,使用时提供保存的路径即可
  • 使用小顶堆,哈夫曼树,实现一个简单的文件压缩程序
  • HDFS文件压缩

    千次阅读 2020-01-04 18:06:11
    这种情况下,MapReduce会采用正确的做法,它不会尝试切分gzip压缩文件,因为它知道输入的时gzip压缩文件(通过文件扩展名看出)且gzip不持支切分。这是可行的,但 牺牲了数据的本地性 :一个map任务处理8个HDFS块...

    前言

    新搭建的集群,需要进行各种测试,于是让一个同事导入一些测试数据,大约1.4T左右。我进行了一个简单的hive测试

    //故意增加shuffle
    SELECT DISTINCT(COUNT id) FROM test_table;
    

    谁知道…就这么一个简单的SQL,半个小时过去后,仍然没有出结果

    追查原因

    原来同事从ftp拉取过来的数据是gzip格式的,他直接导入到Hive表中…,而gzip格式的数据是不可切分的

    如何理解不可切分

    为了进一步理解gzip等不可切分的压缩格式,我做了个测试

    • 上传测试数据
      在这里插入图片描述
      说明:
      使用linux自带的gzip将testdata(拷贝了bigtable的数据,因为直接gzip bigtable,会删除原始数据)
      或者使用:
      在这里插入图片描述
      说明:
      这样不但可以将原有的文件保留,而且可以将压缩包放到任何目录中,解压缩也一样可以看到bigtable.gz和testdata.gz大小一致

    • 在hdfs根目录创建一个data目录、

    [root@node02 data]# hadoop fs -mkdir /data
    [root@node02 data]# hadoop fs -ls /
    Found 2 items
    drwxr-xr-x   - root supergroup          0 2020-01-04 05:47 /data
    drwxrwxrwx   - root supergroup          0 2019-06-26 06:23 /tmp
    
    • 上传压缩后的数据
      由于数据太小(大约50M),仅有一个block,为了测试,自定义block块为10M:
    hadoop fs -D dfs.blocksize=10485760 -put bigtable.gz /data
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    从上图中明显可以看到:gzip格式的数据,不支持切分的真正含义,并不是说HDFS不会将文件分布式的存储在各个节点,而是在计算的时候,不支持切分,也就是仅仅有一个split,从而也就是仅有一个map,这样的效率是及其低下的。
    (后面还会更详细的讲解)
    正常支持切分的数据,执行流程如下:

    在这里插入图片描述
    而不持支切分的数据,如gzip格式的数据,就只有一个map:
    在这里插入图片描述
    这样直接导致的结果就是:
    一个map任务处理N个HDFS块,而其中大多数块并没有存储在执行该map任务的节点上,执行的效率会非常低

    既然这样,难道压缩数据就没有意义了吗?当然不是,而且在生产环境中数据都是经过压缩处理的,接下来详细讲解HDFS数据的压缩

    详解HDFS文件压缩

    • 文件压缩的两大好处
      (1)减少存储文件所需要的磁盘空间
      (2)加速数据在网络和磁盘上的传输

    • 与Hadoop结合使用的常见压缩方法

    压缩格式工具算法文件扩展名是否可切分
    DEFLATEDEFLATE.deflate
    gzipgzipDEFLATE.gz
    bzip2bzip2bzip2.bz2
    LZOlzopLZO.lzo
    LZ4LZ4.lz4
    SnappySnappy.snappy

    说明:

    1. DEFLATE是一个标准压缩算法,该算法的标准实现是zlib。没有可用于生成DEFLATE文件的常用命令行工具,因为通常都用gzip格式。注意,gzip文件格式只是在DEFLATE格式上增加了文件头和一个文件尾。.deflate扩展名是Hadoop约定的。
    2. 如果LZO文件已经在预处理过程中被索引了,那么LZO文件是可切分的。
    • 详细描述文件的压缩
      所有压缩算法都需要权衡空间/时间:压缩和解压缩速度更快,其代价通常是只能节省少量的空间。上表列出所有压缩工具都提供9个不同选项来控制压缩时必须考虑的权衡:选项-1为优化压缩速度,-9为优化压缩空间。例如,下述命令通过最快压缩方法创建一个名为file.gz的压缩文件:
      gzip -1 file
      不同压缩工具有不同的压缩特性。gzip是一个通用的压缩工具,在空间/时间性能的权衡中,属于其他两个压缩方法之间。bzip2的压缩能力强于gzip(即省空间),但压缩速度更慢一点。尽管gzip的解压速度比要锁速度快,但仍比其他压缩格式要慢一些。另一方面,LZO、LZ4和Snappy均优化压缩速度,其速度比gzip快一个数据量级,但压缩效率稍逊一筹。Snappy和LZ4的解压缩速度比LZO高出很多,通过下面的一张图更形象的看出:压缩比和压缩速度是相反的
      在这里插入图片描述
      上表中的“是否可切分”列表示对应的压缩算法是否支持切分(splitable),也就是说,是否可以搜素数据流的任意位置并进一步往下读取数据。可切分压缩格式尤其适合MapReduce(这个原因上面有讲解,下面进行更详细的描述)

    更详细的描述压缩和输入分片

    在考虑如何压缩将有MapReduce处理的数据时,理解这些压缩格式是否支持切分(splitable)是非常重要的。以一个存储在HDFS文件系统中且压缩前大小为1GB的文件为例。如果HDFS的块大小设置为128MB,那么该文件将被存储在8个块中,把这个文件作为输入数据的MapReduce作业,将创建8个输入分片,其中每个分片作为一个单独的map任务的输入被独立处理。

    现在想象一下,文件是经过gzip压缩的,且压缩后文件大小为1GB。与以前一样,HDFS将这个文件保存为8个数据块。但是,将每个数据块单独作为一个输入分片是无法实现工作的,因为无法实现从gzip压缩数据流的任意位置读取数据,所以让map任务独立与其他任务进行数据读取是行不通的。gzip格式使用DEFLATE算法来存储压缩后的数据,而DEFLATE算法将数据存储在一系列连续的压缩块中。问题在于每个块的起始位置并没有以任何形式标记,所以读取时无法从数据流的任意当前位置前进到下一块的起始位置读取下一个数据块,从而实现与整个数据流的同步。由于上述原因,gzip并不支持文件切分。

    在这种情况下,MapReduce会采用正确的做法,它不会尝试切分gzip压缩文件,因为它知道输入的时gzip压缩文件(通过文件扩展名看出)且gzip不持支切分。这是可行的,但牺牲了数据的本地性:一个map任务处理8个HDFS块,而其中大多数块并没有存储在执行该map任务的节点上。而且,map任务数量越少,作业的粒度就越大,因而运行的时间可能会更长。

    在前面假设的例子中,如果文件时通过LZO压缩的,我们会面临相同的问题,因为这个压缩格式也不支持数据读取和数据流同步。但是,在预处理LZO文件的时候使用包含在Hadoop LZO库文件中的索引工具时可能的,你可以在Google和Github网站上获得该库。该工具构建了切分点索引,如果使用恰当的MapReduce输入格式可有效实现文件的可切分特性。

    另一方面,bzip2文件提供不同数据块之间的同步标识(pi的48位近似值),因而它支持切分。可以参考前面的表,了解每个压缩格式是否支持可切分

    该使用哪种压缩格式

    Hadoop应用处理的数据集非常大,因此需要借助与压缩。使用哪种压缩格式,与待处理的文件的大小、格式和所使用的工具有关。下面有一些建议,大致是按照效率从高到底排列的。

    • 使用容器文件格式,例如顺序文件(Sequence File)、Avro数据文件、ORCFile或者Parquet文件,所有这些文件格式同时支持压缩和切分。通常最好与一个快速压缩工具联合使用,例如,LZO、LZ4或者Snappy
    • 使用支持切分的压缩格式,例如bzip2(尽管bzip2非常慢),或者使用通过索引实现切分的压缩格式,例如LZO
    • 在应用中将文件切分成块,并使用任意一种压缩格式为每个数据块建立压缩文件(不论它是否支持切分)。这种情况下,需要合理选择数据块大小,以确保压缩后的数据块的大小近似于HDFS块的大小
    • 存储未经压缩的文件

    对于大文件来说,不要使用不支持切分整个文件的压缩格式,因为会失去数据的本地性,进而造成MapReduce应用效率低下

    后记

    本文内容参考Hadoop权威指南

    展开全文
  • 数据结构课程设计用哈夫曼编码实现文件压缩: 一、实验题目: 用哈夫曼编码实现文件压缩 二、实验目的: 1、了解文件的概念。 2、掌握线性链表的插入、删除等算法。 3、掌握Huffman树的概念及构造方法。...压缩文件
  • 不需要安装。需要压缩的时候直接打开。打开方法(点击PS菜单栏的文件-脚本-图像处理器,选择此脚本即可)
  • 使用zlib库压缩和解压文件vs2012编译通过,windows下包含了库文件vs2012 win10下
  • VB6.0压缩文件、解压文件、合并文件源码实例,这个小工具的用处在于:你可以把图片文件和压缩文件合并起来,传到网上相册中,既保存了图片,同时也把你的文件(可以合并个人隐私文件哦!)传了上去。打开这个文件时...
  • 数组压缩原理     我们知道基本数据类型的大小是固定的,比如int32位(1b),而一个物理存储单元占4kb,若只存一个int类型的话,会浪费非常大的物理空间。所以就有了压缩技术。当你存储固定大小...

    数组压缩原理

        我们知道基本数据类型的大小是固定的,比如int32位(1b),而一个物理存储单元占4kb,若只存一个int类型的话,会浪费非常大的物理空间。所以就有了压缩技术。当你存储 固定大小(一般指基本数据类型)的变量数组时,操作系统会将全部的数组单元存放到同一个物理存储单元中(当数组的大小没有大于存储空间时,多余的再开一个存储空间),可以通过该 存储单元的地址+索引来获取数组中的各个元素,这样就大大节省物理地址的浪费。
        如果不采用这种压缩方式,当你的数组大小大于内存的空间大小时,就会抛出**内存溢出**的异常,而导致程序无法运行。浪费时间还浪费内存空间。

    文件压缩

        另外,当压缩的文件数据中有多个重复出现的元素时,可以使用某个特殊字符来替代,这样就又可以对文件进行压缩,常见的压缩软件就使用了这种方式,比如存储一个下面这样的字节流:
    11111122222333311111222221111
    

    我们可以将1111替换成 x,22222替换成 y,3333替换成z,那么我们就得到了这样一个字节流:

    x11yzx1yx
    

    从上面我们可以看出这种压缩大大缩减了空间,当我们解压文件时,再通过替换规则转换回来可以了。(当然,这种解压方式,别人可以通过分析你大量的压缩数据来解析出你的替换规则,从而得到你的源文件,盗取你的消息,要想不被别人解析,可以使用hash表随机生成,感兴趣可以自己了解相关知识)。总之,文件的压缩就是对重复出现的字节和较长字节的替换。

    展开全文
  • 下面小编就为大家分享一篇c#打包文件压缩的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 用于从 AWS 中 S3 存储桶中存在的 zip 文件加载解压缩文件的实用程序类 从给定的存储桶 [bucket_name] 中解压 zip 文件,然后将解压后的文件加载到新创建的存储桶“[bucket_name].unzipped”中的类似文件夹结构中。 ...
  • zip命令 压缩文件

    2021-01-09 19:24:22
    zip程序将一个或多个压缩文件与有关文件的信息(名称、路径、日期、上次修改的时间、保护和检查信息以验证文件完整性)一起放入一个压缩存档中。可以使用一个命令将整个目录结构打包到zip存档中。 对于文本文件来说,...
  • UDP 多线程 压缩文件

    2016-11-28 15:28:05
    VC6.0 UDP socket 多线程 保存文件 定时压缩文件 删除文件
  • 如何Mac上压缩文件?

    2021-03-30 15:11:38
    如何Mac上压缩文件?空间不足或需要将文件发送给别人?我们将向您展示Mac上压缩文件的多种方法中的一些方法,有需要的朋友快来跟小编看看吧! Finder的“图库”视图使您可以通过增强的预览窗格和丰富的元数据...

    如何在Mac上压缩文件?空间不足或需要将文件发送给别人?我们将向您展示在Mac上压缩文件的多种方法中的一些方法,有需要的朋友快来跟小编看看吧!

    Finder的“图库”视图使您可以通过增强的预览窗格和丰富的元数据在Mac上的照片文件夹中滚动。预览可以很好地用于基本用途,但缺少导航控件,出色的观看体验和其他功能。

    如何在Mac上压缩大型文件?

    只需选择您的文件,单击一个选项,您的文件全部被压缩。这是您的操作方式:

    1.打开一个查找器窗口。

    2.查找您要压缩的文件。

    3.右键单击任何一个文件或文件夹,然后选择“压缩”

    4.macOS将在与原始文件相同的文件夹中创建一个ZIP存档。

    您会发现压缩存档的大小比实际单个文件的大小小得多。

    如何在Mac上压缩PDF文件?

    在这里,我们介绍了这两种方法。

    1.使用预览在Mac上压缩PDF

    如果您不愿意安装第三方应用程序,请按照以下方法使用“预览”压缩PDF文件:

    1.右键单击您的PDF,然后选择“打开方式”,然后选择“预览”。

    2.单击顶部的“文件”菜单,然后选择“导出”。

    3.在显示的屏幕上,从Quartz Filter下拉菜单中选择减小文件大小。然后,点击保存。

    您的输出PDF将小于原始PDF。请记住,压缩和未压缩的PDF会有质量差异。

    2.使用第三方应用程序在Mac上压缩PDF

    有一个名为Lightweight PDF的免费应用程序,可让您压缩PDF文件。

    这是您使用该应用程序的方法:

    1.在Mac上 下载并安装Lightweight PDF应用程序。

    2.开启应用程式。

    3.将要压缩的PDF拖到应用程序界面上。

    4.该应用程序应告诉您压缩文件的大小。

    如何在Mac上压缩视频文件?

    1.通过降低分辨率在Mac上压缩视频
    压缩视频的一种方法是降低视频的分辨率。这会极大地影响视频的质量,但是,如果您要这样做,我们在这里展示如何:

    右键单击要压缩的视频,然后选择“打开方式”,然后选择“ QuickTime Player”。
    单击顶部的“文件”菜单,然后选择“导出为”。

    您会在展开的菜单中看到各种质量选项。单击您喜欢的视频,您的视频将使用此新分辨率。请记住,分辨率越低,视频越小。在以下屏幕上 单击“保存”以保存压缩的视频。

    2.在Mac上压缩视频,对视频质量的影响较小

    在macOS中压缩视频的另一种方法是更改视频的文件格式。

    在下面的步骤中,我们演示如何使用HandBrake在Mac上压缩视频。

    1.在Mac上 安装HandBrake。

    2.打开应用程序,单击文件>开源,然后添加要压缩的视频。

    3.从格式下拉菜单中 选择MKV文件。

    4.随意调整其他选项(如果您认为合适)。

    5.单击开始以开始压缩视频。

    如何在Mac上压缩MP3和其他音频文件?

    音频文件易于压缩。这是因为您所需要做的就是降低文件的比特率,并缩小原始文件的大小。

    以下是在MacOS中使用Audacity(免费)压缩MP3和其他音频文件的方法:

    1.如果尚未 安装Audacity,请在Mac上安装它。

    2.打开应用程序,单击文件>打开,然后添加音频文件。

    3.加载文件后,单击文件>导出,然后选择压缩文件的输出格式。

    4.从结果屏幕上的“比特率模式”选项中 选择“常数”。

    5.从质量下拉菜单中选择一个较低的比特率。如果不确定选择什么,请尝试128 kbps。然后,点击保存。

    以上就是小编给大家带来的全部内容,想了解更多关于Mac相关内容,请关注macz.com吧!

    展开全文
  • 顾名思义,可以认为是对一个文件的大小进行压缩,使其压缩后的大小为原本大小的二分之一、四分之一、甚至十分之一,这样压缩后的文件减小了文件存储大小,释放了大量空间,也利于文件的传输! Hadoop中,我们...
  • hive优化-文件存储格式和压缩方法

    千次阅读 2019-06-29 15:45:42
    需要结合实际的业务,数据的类型,分布,质量状况等来实际的考虑如何进行系统性的优化,hive底层是mapreduce,所以hadoop调优也是hive调优的一个基础,hvie调优可以分为几个模块进行考虑,数据的压缩存储,sql的...
  • 哈夫曼实现文件压缩压缩(c语言)

    万次阅读 多人点赞 2019-01-23 17:04:47
    写一个对文件进行压缩和解压缩的程序,功能如下: ① 可以对纯英文文档实现压缩和解压; ② 较好的界面程序运行的说明。 介绍哈夫曼: 效率最高的判别树即为哈夫曼树 计算机数据处理中,霍夫曼编码...
  • 网络游戏-网络存储装置中操作压缩文件的方法.zip

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 553,320
精华内容 221,328
关键字:

压缩文件存储在哪里了