哪个bzip2实现具有最大的解压缩速度?
有一个http://bitbucket.org/james_taylor/seek-bzip2/src/tip/micro-bunzip.c声称
Manuel Novoa III(mjn3@codepoet.org)进行了大小和速度优化。更有效地读取霍夫曼代码,简化的read_bunzip()函数以及其他各种调整。在(有限的)测试中,在x86上比bzcat快20%,在arm上快10%。请注意,在read_unzip()中花费大约2/3的时间来逆转Burrows-Wheeler转换。大部分时间是由于缓存未命中导致的延迟。
许多缓存未命中有机会通过某些技术进行优化,因此甚至可以实现更快的实现。
这个(seek-bzip2)还有一个有趣的功能,可以在输入文件中轻松查找。
我的程序将使用bzip2的输出,并且(理论上)可以在文件的不同部分上并行执行此操作。因此,也考虑了并行bzip2实现。
谢谢。
尝试执行以下命令时:
导入matplotlib.pyplot作为plt
发生以下错误:
从_bz2导入BZ2Compressor,BZ2Decompressor ImportError:没有名为“ _bz2”的模块
所以,我试图使用在Ubuntu中安装bzip2模块:
sudo pip3安装bzip2
但是,以下语句在终端中弹出:
找不到满足bzip2要求的版本(来自版本:)找不到与bzip2匹配的发行版
我该怎么办才能解决问题?
我目前需要一些帮助来学习如何使用 bzlib.h 头文件。我想知道是否有人会这么好心帮助我在 C++ 中找出 compressToBZ2() 函数而不使用任何 Boost 库?
void compressBZ2(std::string file)
{
std::ifstream infile;
int fileDestination = infile.open(file.c_str());
char bz2Filename[] = "file.bz2";
FILE *bz2File = fopen(bz2Filename, "wb");
int bzError;
const int BLOCK_MULTIPLIER = 7;
BZFILE *myBZ = BZ2_bzWriteOpen(&bzError, bz2File, BLOCK_MULTIPLIER, 0, 0);
const int BUF_SIZE = 10000;
char* buf = new char[BUF_SIZE];
ssize_t bytesRead;
while ((bytesRead = read(fileDestination, buf, BUF_SIZE)) > 0)
{
BZ2_bzWrite(&bzError, myBZ, buf, bytesRead);
}
BZ2_bzWriteClose(&bzError, myBZ, 0, NULL, NULL);
delete[] buf;
}
Run Code Online (Sandbox Code Playgroud)
我一直试图做的是使用这样的东西,但我没有运气。我正在尝试获取 …
我已经解决了几个关于 Python 和 bzip2 的 StackOverflow 问题。这些对于让我进入我现在的状态非常有帮助。这是我到目前为止所做的以及我遇到的问题:
我需要 Python 2.7.3 与 bzip2 模块一起安装,以便从源代码正确编译 node.js。是的,我很抱歉,但我确实必须作为一个来自源头的普通用户来做这一切。
我已经从源代码安装了 bzip2,如下所示:
$ make -f Makefile-libbz2_so
$ make
$ make install PREFIX=${STOW}/bzip2-1.0.6
$ cp libbz2.so.1.0.6 ${STOW}/bzip2-1.0.6/lib/
$ cd ${STOW}/bzip2-1.0.6/lib
$ ln -s libbz2.so.1.0.6 libbz2.so.1.0
$ cd ${STOW}
$ stow bzip2-1.0.6
Run Code Online (Sandbox Code Playgroud)
在其他任何事情之前,我的 PATH 中都有 stow 的根目录,所以这导致:
$ bzip2 -V
# [...] Version 1.0.6
Run Code Online (Sandbox Code Playgroud)
这表明在我的 PATH 中使用了正确的 bzip2。
接下来,我继续从源代码编译 Python …
这是关于 bzip2存档格式的问题。任何 Bzip2 存档都由文件头、一个或多个块和尾结构组成。所有块都应以“1AY&SY”开头,Pi 编号的 6 字节 BCD 编码数字,0x314159265359。根据bzip2 的来源:
/*--
A 6-byte block header, the value chosen arbitrarily
as 0x314159265359 :-). A 32 bit value does not really
give a strong enough guarantee that the value will not
appear by chance in the compressed datastream. Worst-case
probability of this event, for a 900k block, is about
2.0e-3 for 32 bits, 1.0e-5 for 40 bits and 4.0e-8 for 48 bits.
For a compressed file of size …Run Code Online (Sandbox Code Playgroud) 我的环境是CentOS 7; Spark 1.6.1; Hadoop 2.6.4; 我在集群模式下有两个从节点.
当我尝试hadoop命令时,我得到了 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable
我检查hadoop checknative -a,我得到了所有错误的回应.当我添加时,部分问题得以解决
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native
export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/native/"
Run Code Online (Sandbox Code Playgroud)
在hadoop-env.sh并重新安装OpenSSL的-devel的.但是,当我输入时,我仍然收到警告hadoop checknative -a:
[hadoop@host-10-174-101-17 ~]$ hadoop checknative -a
16/07/13 14:36:24 WARN bzip2.Bzip2Factory: Failed to load/initialize native-bzip2 library system-native, will use pure-Java version
16/07/13 14:36:24 INFO zlib.ZlibFactory: Successfully loaded & initialized native-zlib library
Native library checking:
hadoop: true /usr/local/hadoop/lib/native/libhadoop.so.1.0.0
zlib: true /lib64/libz.so.1
snappy: true /lib64/libsnappy.so.1 …Run Code Online (Sandbox Code Playgroud) 我正在尝试运行一些面部正面化代码(在 Windows10 上使用 Python3),该代码使用 opencv 和 dlib,并且需要一个名为shape_predictor_68_face_landmarks.dat. 该代码尝试自动下载它然后解压缩它,但它无法解压缩并出现unexpected end of archive错误。我尝试使用 WinRaR 修复文件(我也尝试从http://sourceforge.net/projects/dclib/files/dlib/v18.10/shape_predictor_68_face_landmarks.dat.bz2手动下载)但它说它只能修复.zip 和 .rar 文件。
有谁知道我可以从哪里下载未压缩的 .dat 文件?或者我如何在 Windows 中修复损坏的 .bz 文件?
我正在尝试从https://github.com/pnnl/safekit运行此代码,在 Windows 10 上使用 cmd,我已经安装了 python。当我输入命令时:
tar -xjvf data_examples.tar.bz2
Run Code Online (Sandbox Code Playgroud)
我不断收到错误:
tar:打开存档时出错:无法初始化过滤器;无法运行程序“bzip2 -d”
我尝试通过 easy-7 zip 和 GnuWin32 下载 bzip2 ,但没有成功。谁能帮我?
PS:我在发布之前确实搜索过同样的问题。
这里的其他一些问题是关于能够仅压缩大压缩数据文件的一部分/块的问题。允许某种“随机访问解压缩”。Bzip2 一直是此类功能的推荐之一。
\n\n在Wikipedia和一些称为非正式规范的文档上阅读有关 bzip 的信息后,尚不完全清楚此功能在什么级别上单独解压缩 bzip2 文件的一部分。似乎有两种选择,a)它在 s 的级别上BzipStream,b)它甚至在 s 的级别上StreamBlock(据我所知, a 内部可以有一个或多个BzipStream)。
\n\n\nRun Code Online (Sandbox Code Playgroud)\nBZipFile:=BZipStream+\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80BZipStream:=StreamHeader StreamBlock* StreamFooter\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80StreamHeader:=HeaderMagic Version Level\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80StreamBlock:=BlockHeader BlockTrees BlockData\n \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80BlockHeader:=BlockMagicBlockCRC Randomized OrigPtr \n \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80BlockTrees:=SymMapNumTrees NumSels Selectors Trees\n \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80SymMap:=MapL1 MapL2{1,16}\n \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80Selectors:=Selector{NumSels}\n \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80Trees:=(BitLen Delta{NumSyms}{NumTrees}\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80StreamFooter:=FooterMagic StreamCRCPadding\n
尽管bzip2经常受到赞扬,但在我看来,每个 BzipStream 中的存档数据不是字节对齐的,而是位对齐的,这表明单个块的单独解压并不是应该发生的事情,虽然我不能确定,因此这个问题:)
\n\n更新
\n\n看看man bzip2recover手册页就知道了
\nbzip2 以块的形式压缩文件,通常为 900kbytes 长。每个块都是独立处理的。如果介质或传输错误导致多块 .bz2 文件损坏,则可以从文件中未损坏的块中恢复数据。
\n\n每个块的压缩表示由 48 位模式定界,这使得能够以合理的确定性找到块边界。每个块还携带自己的 …
我使用 pyenv 来安装 python 3.8.2 并创建一个 virtualenv。在 virtualenv 中,我使用 pipenv 来安装pandas.
但是,在导入熊猫时,我得到以下信息:
[...]
File "/home/luislhl/.pyenv/versions/poc-prefect/lib/python3.8/site-packages/pandas/io/common.py", line 3, in <module>
import bz2
File "/home/luislhl/.pyenv/versions/3.8.2/lib/python3.8/bz2.py", line 19, in <module>
from _bz2 import BZ2Compressor, BZ2Decompressor
ModuleNotFoundError: No module named '_bz2'
Run Code Online (Sandbox Code Playgroud)
经过一番谷歌搜索,我发现有些人建议我在系统中安装 bzip2 库后从源代码重建 Python。
但是,在尝试安装它后,sudo dnf install bzip2-devel我发现我已经安装了它。
据我所知,pyenv 在安装某个版本时从源代码构建 python。那么,为什么它不能在构建时包含 bzip2 模块呢?
如何使用 pyenv 重建 Python 以使 bzip2 可用?我在 Fedora 30
提前致谢
更新 我尝试在详细模式下使用 pyenv 安装另一个版本的 python,以查看编译输出。
编译的最后有这个信息:
WARNING: The Python bz2 extension was not compiled. Missing the …Run Code Online (Sandbox Code Playgroud) bzip2 ×10
python ×3
archive ×2
python-3.x ×2
block ×1
c++ ×1
compression ×1
dlib ×1
hadoop ×1
importerror ×1
java ×1
matplotlib ×1
node.js ×1
opencv ×1
performance ×1
pyenv ×1
python-2.7 ×1