`
adofu
  • 浏览: 4070 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

JAVA 读取lzo压缩文件

 
阅读更多
JAVA 读取lzo压缩文件

今天犯了一个愚蠢的问题,用lzo做过压缩的数据,用lzop去读,但疼痛了好一会儿。

lzopcode和lzocode的做个简单介绍:

1.lzocode压缩过的文件都是以.lzo_deflate结尾,相应的加载类:(com.hadoop.compression.lzo.LzoCodec)
2.zopcode压缩过的文件都以.lzo结尾(com.hadoop.compression.lzo.LzopCodec)

读取lzocode文件

private static Configuration conf = new Configuration(true); 
private static FileSystem hdfs; 
private static Class<?> codecClass ;
private static CompressionCodec codec;
static { 
        String path = "/usr/local/webserver/hadoop/etc/hadoop/"; 
        conf.addResource(new Path(path + "core-site.xml")); 
        conf.addResource(new Path(path + "hdfs-site.xml")); 
//加载解压lzo的class,对应的还有lzop的class
        codecClass = Class.forName("com.hadoop.compression.lzo.LzoCodec");
        codec = (CompressionCodec)ReflectionUtils.newInstance(codecClass, conf);

public List<String> readFile(String dir) {
        InputStream input = null;
        List<String> list = new LinkedList<String>();
        try {
            Path path = new Path(dir);
            FileSystem hdfs = FileSystem.get(URI.create(dir),conf);
            //获取hdsf上文件夹下面的文件
            FileStatus[] fileStatus = hdfs.listStatus(path);
            //遍历文件,逐一读取内容
            for (int i = 0; i < fileStatus.length; i++) {
                input = hdfs.open(new Path(fileStatus[i].getPath().toString()));
                //解压缩流
                input = codec.createInputStream(input);
                list.addAll(IOUtils.readLines(input,"utf8"));
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            try {
                if(input != null)
                    input.close();
                hdfs.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return list;
    }
分享到:
评论

相关推荐

    22、MapReduce使用Gzip压缩、Snappy压缩和Lzo压缩算法写文件和读取相应的文件

    Lzo压缩速度快,但解压缩速度较慢,通常在需要快速写入数据而不太关心读取性能的场景下使用。 压缩算法的选择取决于具体的应用需求,如压缩效率、解压速度以及对压缩比的需求。在实际应用中,可能还需要考虑其他...

    pyspark读lzo需要依赖

    在Spark作业执行时,它会自动加载此JAR包,为Pyspark提供读取和写入LZO压缩文件的能力。确保将此文件放到`spark\jars`目录后,Spark的配置应该能够识别并使用其中的类。 在Pyspark中读取LZO压缩的文件,可以使用...

    hadoop-lzo-0.4.21-SNAPSHOT.jar

    2. 数据压缩:Hadoop LZO提供了一种名为`LZOFileFormat`的文件格式,可以用来创建和读取LZO压缩的文件。通过设置`mapreduce.output.fileoutputformat.class`属性为`com.hadoop.compression.lzo.LZOFileOutputFormat`...

    hbase安装lzo压缩包的编译文件master

    在HBase中,LZO压缩可以减少磁盘空间的占用,加快数据的读取和写入速度。 接下来,我们来探讨如何在HBase环境中安装和编译LZO: 1. **下载源码**:首先,你需要从官方网站或者GitHub上下载`hadoop-lzo`的源代码,...

    lzo 2.0.6、hadoop-lzo-master、apache-maven

    Hadoop-LZO项目可能包含了Hadoop与LZO之间的集成代码,使用户能够方便地在Hadoop作业中读写LZO压缩的数据。`hadoop-lzo-master.zip`很可能是该项目的源码仓库,包含了编译和配置Hadoop-LZO所需的所有文件。 ...

    hadoop-lzo-0.4.21-SNAPSHOT jars

    在Hadoop的类路径中添加这个JAR文件后,就可以在MapReduce任务或者HDFS操作中使用LZO压缩功能。 3. `hadoop-lzo-0.4.21-SNAPSHOT-sources.jar`:这个文件包含了Hadoop-LZO的源代码,对于开发者来说非常有用,因为...

    hadoop-lzo所需包

    6. 更新Hadoop配置文件(如`core-site.xml`),添加对LZO压缩的支持,指定相关的压缩格式和编码器。 7. 重启Hadoop服务,使新的配置生效。 完成上述步骤后,Hadoop集群就可以使用LZO压缩功能了。在HDFS上存储数据时...

    minilzo-2.03.tar.gz

    在LZO压缩算法中,数据流可以被连续读取、压缩和写入,而无需预先加载整个文件到内存中,这使得LZO适用于处理大文件和实时数据。 **内容详解:** LZO算法的核心在于查找重复的字节序列,并用较短的编码表示这些...

    传输到hdfs数据,进行压缩

    `hadoop-lzo`是Hadoop与LZO集成的库,包含了Hadoop读写LZOP压缩文件所需的Java类。在Hadoop集群上部署`hadoop-lzo`库,确保所有节点都能访问到。通常,你可以在所有节点上执行以下步骤: 1. 将`hadoop-lzo`的jar包...

    Java写的hadoop压缩worldcount例子

    `InputFormat`会解析压缩文件,将压缩块转化为可以被Map任务处理的记录。`OutputFormat`则会在Reduce阶段结束后,将结果数据压缩后再写入到HDFS。 此外,为了使程序能正确运行,还需要正确配置Hadoop的环境变量,...

    datax支持读取parquet格式文件,支持写入parquet格式文件,修复读取orc读取数据丢失问题

    2. **压缩**:Parquet支持多种压缩算法,如Snappy、Gzip和LZO,这可以显著减少存储空间。 3. **多级编码**:Parquet采用不同的编码技术(如RLE、Delta、Bit-Packing)对数据进行编码,进一步提升读取效率。 4. **跨...

    压缩算法.docx

    例如,对于Huffman压缩,可以创建自定义的数据结构来存储字符频率和构建哈夫曼树,同时编写读写文件的函数来处理编码和解码过程。而对于LZ系列算法,可能需要实现滑动窗口机制,并设计匹配算法来寻找重复模式。 ...

    java使用Parquet

    4. **Java读取Parquet文件** - 使用`ParquetFileReader`和`ParquetRecordReader`可以逐行读取Parquet文件中的数据。 - 示例代码: ```java ParquetFileReader reader = ParquetFileReader.open(HadoopInputFile....

    hadoop-snappy的java包

    而Snappy则是一种高效的压缩和解压缩算法,最初由Google开发,主要用于提高数据读写速度,尤其是在大数据处理环境中。Hadoop与Snappy的结合,旨在优化Hadoop集群的数据传输效率。 在Hadoop中集成Snappy,可以显著...

    Hadoop 2.2.0 64位native文件(重编译)

    5. **Bzip2和Lzo压缩库**:Hadoop支持数据压缩,其中Bzip2和Lzo是两种常见的压缩算法,这些压缩库在本地环境下可以提供更快的压缩和解压缩速度。 6. **SSL和加密库**:为了实现安全的数据传输,Hadoop使用了OpenSSL...

    Hbase设置Snappy压缩测试

    例如,在`HbaseCommons.java`这个文件中,可能包含了HBase操作的一些常见方法,如连接HBase集群、创建表、写入数据、读取数据等。通过阅读源码,我们可以了解这些操作的具体实现,这对于调试和优化HBase应用非常有...

    Hadoop源代码分析(四)

    Lzo压缩由`LzoCodec`处理,它使用了Lzop工具的压缩格式,通过JNI(Java Native Interface)调用C++的LZO库进行高效压缩。SnappyCodec,用于Google的Snappy压缩算法,同样通过JNI与C++库交互,以提供快速的压缩和解...

    hadoop2.9.0_X64的native文件

    5. **LZO** 和 **Snappy**:是两种高效的压缩算法,Hadoop支持这两种压缩格式,以提高数据读写速度。 6. **JVM Bindings**:这些库使Hadoop能够与Java虚拟机(JVM)进行通信,实现如垃圾回收、线程管理等操作。 当...

    支持snappy压缩的hadoop,直接下载到本地,解压后即可使用

    3. **直接操作**:用户还可以在编程时(如使用Java API)指定使用Snappy压缩和解压缩数据。 在大数据分析和处理的场景下,虚拟机(VM)经常被用来运行Hadoop集群,因为它们可以方便地部署、扩展和隔离资源。在下载...

    HDFS及优化综述_朱紫钰_20192622781

    LZO压缩后的文件可拆分,适合文本文件压缩。Gzip提供较高的压缩比,但写入速度较慢,读取性能接近Snappy,通常与特定文件格式结合使用。bzip2压缩性能最优,但解压速度慢,适用于空间有限的场景。 【HDFS优化】 ...

Global site tag (gtag.js) - Google Analytics