核心解压命令
最基本、最常用的解压命令是 lzop -d。

基本解压
命令格式:
lzop -d [压缩文件.lzo]
说明:
lzop: LZO 压缩/解压工具。-d:--decompress的缩写,表示执行解压操作。[压缩文件.lzo]: 你的 LZO 压缩文件名。
示例:
假设你有一个名为 data.log.lzo 的文件,解压它会生成 data.log。
lzop -d data.log.lzo
执行后,data.log.lzo 文件会被保留,同时生成一个解压后的 data.log 文件。

常用选项与组合
在实际使用中,我们经常需要结合其他选项来满足不同的需求。
解压并删除原文件(推荐)
这个选项非常常用,可以避免手动删除已解压的压缩文件,节省磁盘空间。
命令格式:
lzop -dv [压缩文件.lzo]
说明:

-v:--verbose的缩写,表示显示详细的解压过程(如文件名、压缩率等)。-d: 解压。- 组合
-dv是一个非常常见的习惯用法,既能解压又能看到进度,还能自动清理。
示例:
lzop -dv data.log.lzo
输出可能如下:
data.log.lzo: 1.2x - 5.1% (uncompressed 1024000 -> compressed 1000000)
执行后,data.log.lzo 会被删除,只留下 data.log。
指定输出文件名
如果你不想使用默认的解压文件名,可以使用 -o 选项。
命令格式:
lzop -d -o [输出文件名] [压缩文件.lzo]
示例:
将 data.log.lzo 解压并命名为 my_data.txt。
lzop -d -o my_data.txt data.log.lzo
注意: 使用 -o 时,即使解压成功,原始的 data.log.lzo 文件不会被自动删除。
解压到标准输出
这个选项在管道操作中非常有用,比如将解压后的内容直接传给另一个命令(如 grep, less),而不会在磁盘上生成中间文件。
命令格式:
lzop -dc [压缩文件.lzo]
说明:
-c:--stdout的缩写,表示将解压后的内容输出到标准输出(也就是你的终端)。-d: 解压。
示例 1:直接查看文件内容
lzop -dc data.log.lzo | less
这会将 data.log.lzo 解压后的内容通过管道传给 less 命令,让你可以分页浏览。
示例 2:在文件中搜索关键词
lzop -dc data.log.lzo | grep "ERROR"
这会在不解压整个文件到磁盘的情况下,直接搜索 data.log.lzo 中包含 "ERROR" 的行。
LZO 与其他工具的集成
在 Hadoop/Spark 生态中,处理 .lzo 文件通常需要额外的库支持。
在 Hadoop 中解压 LZO 文件
Hadoop 本身不直接支持 LZO 格式,你需要完成以下步骤:
-
安装 Hadoop LZO 库:
- 下载
hadoop-lzo库(例如从 GitHub)。 - 编译并打包成 JAR 文件。
- 将这个 JAR 文件分发到 Hadoop 集群的每个节点的
$HADOOP_HOME/lib目录下。 - 在
core-site.xml中配置io.compression.codecs参数,添加com.hadoop.compression.lzo.LzoCodec。
- 下载
-
使用 Hadoop 命令解压: 配置好后,你就可以使用
hadoop命令来解压了。命令格式:
hadoop fs -text [LZO文件路径]
或者
hadoop fs -cat [LZO文件路径] | lzop -d
hadoop fs -text命令会自动识别并调用正确的编解码器来解压和显示文件内容,是更推荐的方式。
在 Spark 中读取 LZO 文件
Spark 2.0+ 版本原生支持 LZO,前提是 Hadoop LZO 库在类路径中。
PySpark 示例:
# 确保 hadoop-lzo-x.x.x.jar 在 Spark 的类路径中
# 例如通过 spark-submit 的 --jars 参数
# 读取 LZO 文件
df = spark.read.text("hdfs://path/to/your/data.log.lzo")
# 或者指定格式
df = spark.read.format("text").load("hdfs://path/to/your/data.log.lzo")
df.show()
安装 lzop 工具
如果你的系统上没有 lzop 命令,可以使用以下命令安装:
-
在基于 Debian/Ubuntu 的系统上:
sudo apt-get update sudo apt-get install lzop
-
在基于 RedHat/CentOS/Fedora 的系统上:
sudo yum install lzop # 或者对于较新的系统 sudo dnf install lzop
-
在 macOS 上(使用 Homebrew):
brew install lzop
| 命令 | 功能 | 示例 |
|---|---|---|
lzop -d file.lzo |
基本解压,保留原文件 | lzop -d access.log.lzo |
lzop -dv file.lzo |
推荐:解压并显示进度,删除原文件 | lzop -dv access.log.lzo |
lzop -d -o new.txt file.lzo |
解压到指定文件名,保留原文件 | lzop -d -o new_access.log access.log.lzo |
lzop -dc file.lzo |
解压到标准输出,用于管道操作 | lzop -dc file.lzo \| grep "error" |
hadoop fs -text file.lzo |
在 Hadoop 集群中解压并查看 LZO 文件 | hadoop fs -text /data/logs.lzo |
希望这份详细的指南能帮助你熟练地使用 LZO 解压命令!
