在Python编译的时候加入bz2
Spark执行Python任务时因缺少bz2模块报错,原因是打包的Pythonzip未包含系统动态库libbz2.so。将系统该文件复制到Python源码Lib目录,重新编译并打包上传,即可正常导入bz2模块,解决Spark环境依赖缺失问题。
用Spark配合Python跑任务的时候,有时候会遇到一个挺让人头疼的报错:明明系统里好好的,一执行就提示No module named bz2。别急,这其实跟Spark的Python运行机制有关——问题不在系统,而在你打包的那个Python zip包里。

说起来,Spark为了分布式执行,需要把整个Python环境压缩成zip上传到HDFS。这时候你编译出来的Python(通常放在自定义目录,不影响系统自带的那份)默认是不带bz2模块的。bz2属于系统级动态链接库,系统自带的Python之所以能用,是因为它直接读取了系统的libbz2.so。但你打包进zip的Python,显然没包含这些so文件。
解决方法其实不复杂:把系统里已有的libbz2库文件找出来,塞进Python源码的Lib目录下,再重新编译一次就行。具体操作分两步走——
先用dpkg -L libbz2-1.0定位系统里libbz2.so相关文件的位置。然后把所有的libbz2.so*文件拷贝到你即将编译的Python源码目录下的Lib/目录里(注意是Python源码根目录下的Lib,不是安装后的Lib)。接下来回到Python源码根目录,执行常规编译流程:
cd Python-2.7.12
export PYTHON_ROOT=~/Python
./configure --prefix="${PYTHON_ROOT}" --enable-unicode=ucs4
make
make install
编译完成后,再用这个新生成的Python重新打包zip上传到HDFS,bz2模块就能正常import了。整个过程的关键就一句话:**把系统的动态库提前喂给编译过程**,别让它漏掉。
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















