windows下hadoop对lzo的支持
背景
下半年学习大数据,首当其冲,先学习了hadoop
学习hadoop的过程可谓是艰难重重
其中最麻烦的就是本地调式,写代码总会有bug,在网上也找到一些windows下安装hadoop的方法,也有效,能够成功在windows下运行
map-reduce程序,很好的帮助我调试代码
但是,我前段时间遇到了lzo,它从hadoop的压缩库里移除了,虽然在线上,只要linux系统配置好了lzo,你测试没问题,但是本地单机模式
测试的时候,根本跑不起来,因为不支持!!!
心路历程
要使用lzo格式去压缩和解压文件,首先得添加依赖
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-lzo</artifactId>
<version>0.4.15</version>
<scope>provided</scope>
</dependency>
有0.4.15 和0.4.20两个版本,我只要添加其中一个,关于lzo的代码能在线上跑起来,本机就不行,因为系统没有lzo支持,而且很坑的是这个
包maven它自动下载不了,自己手动安装了这个包才搞定
因为总要测试,但是数据文件都是lzo格式的文件,本地测试需要解压成txt格式的,这样没法看出我写的lzo代码有没有问题(其实没有问
题),但是没有在本地跑一下,总觉得心里空空的。。。
开始测试各种报错全遇到了
# 报错1
# 这里报错是说没本地没有这个lzo库,你跑不了
Error: java.lang.RuntimeException: native-lzo library not available
# 所以我去网上找这个库怎么安装到本地
# 然后在官网上找到了lzo2.10版本,下载下来
# 这个库是c写的!!!
# 我还得找个办法给它编译了,用微软Visual Studio 2010的命令行工具去编译,这个网上有教程
# 这个命令行工具刚安装会少东西,百度解决了
# 但是,这个2010是个很老的版本,比较难找,我直接采用2019最新的版本, 这个下载起来比较方便
# 好了,按照教程编译好了,一跑程序,又报错了
# 报错2
java.io.IOException: Compressed with incompatible lzo version: 0x2060 (expected 0x2050)
java.lang.UnsatisfiedLinkError: no gplcompression in java.library.path
# 这两个错误一直遇到,网上的方法极其有限,
# 我还在github上找到了hadoop-lzo库,需要自己编译,上面有教程,但是编译起来很麻烦
# 然后我在这
[传送门](https://blog.csdn.net/coolerzZ/article/details/103952188?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_utm_term~default-4.no_search_link&spm=1001.2101.3001.4242.3)
# 找到了这位大哥已经编译好的lzo2.dll文件和gplcompression文件,下载下来放到类路径下就行了,但是这是针对0.4.21版本的编译版本,再在里添加0.4.21的包
# 到类路径,就跑起来了!!!
总结下来,
- 想要在windows下用hadoop对lzo的支持,
- 首先你得安装,编译lzo包,用Visual Studio的命令行工具
- 然后你得找到hadoop-lzo,在github上有,然后编译成jar包,加载到库里
- 最后你编译的lzo2.dll 和 gplcompression一定要放在环境变量路径里
- 才能跑起来~~
|