2 aoan1314 aoan1314 于 2016.09.10 00:56 提问

用java读取hdfs的.lzo_deflate文件报错

linux环境没有问题,hadoop环境、配置也没有问题,并且通过hdoop fs -text 指令能正常打开该压缩文件。但是用java读取就报错了,请大神帮忙看看,谢谢

代码如下:
public static void main(String[] args) {
String uri = "/daas/****/MBLDPI3G.2016081823_10.1471532401822.lzo_deflate";
Configuration conf = new Configuration();
String path = "/software/servers/hadoop-2.6.3-bin/hadoop-2.6.3/etc/hadoop/";
conf.addResource(new Path(path + "core-site.xml"));
conf.addResource(new Path(path + "hdfs-site.xml"));
conf.addResource(new Path(path + "mapred-site.xml"));
try {
CompressionCodecFactory factory = new CompressionCodecFactory(conf);

        CompressionCodec codec = factory.getCodec(new Path(uri));
        if (codec == null) {
            System.out.println("Codec for " + uri + " not found.");
        } else {
            CompressionInputStream in = null;
            try {
                in = codec.createInputStream(new java.io.FileInputStream(uri));
                byte[] buffer = new byte[100];
                int len = in.read(buffer);
                while (len > 0) {
                    System.out.write(buffer, 0, len);
                    len = in.read(buffer);
                }
            } finally {
                if (in != null) {
                    in.close();
                }
            }
        }

    } catch (Exception e) {
        e.printStackTrace();
    }
}

报错信息如下:
log4j:WARN No appenders could be found for logger (org.apache.hadoop.util.NativeCodeLoader).

log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
java.io.FileNotFoundException: /daas/***/MBLDPI3G.2016081823_10.1471532401822.lzo_deflate (没有那个文件或目录)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.(FileInputStream.java:146)
at java.io.FileInputStream.(FileInputStream.java:101)
at FileDecompressor.main(FileDecompressor.java:53)

加载的jar包:
    <classpathentry kind="lib" path="lib/commons-cli-1.2.jar"/>
<classpathentry kind="lib" path="lib/commons-collections-3.2.2.jar"/>
<classpathentry kind="lib" path="lib/commons-configuration-1.6.jar"/>
<classpathentry kind="lib" path="lib/commons-lang-2.6.jar"/>
<classpathentry kind="lib" path="lib/commons-logging-1.1.3.jar"/>
<classpathentry kind="lib" path="lib/guava-18.0.jar"/>
<classpathentry kind="lib" path="lib/hadoop-auth-2.6.3.jar"/>
<classpathentry kind="lib" path="lib/hadoop-common-2.6.3.jar"/>
<classpathentry kind="lib" path="lib/hadoop-hdfs-2.6.3.jar"/>
<classpathentry kind="lib" path="lib/htrace-core-3.0.4.jar"/>
<classpathentry kind="lib" path="lib/log4j-1.2.17.jar"/>
<classpathentry kind="lib" path="lib/protobuf-java-2.5.0.jar"/>
<classpathentry kind="lib" path="lib/slf4j-api-1.7.5.jar"/>
<classpathentry kind="lib" path="lib/slf4j-log4j12-1.7.5.jar"/>
<classpathentry kind="lib" path="lib/hadoop-lzo-0.4.20.jar"/>

1个回答

aoan1314
aoan1314   2016.09.10 00:57

问题很奇怪,通过百度实在搞不定了,跪求过路大神帮忙指点迷津,谢谢!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
查看HDFS中LZO压缩文件内容的脚本
最近常常需要查看LZO文件里面的内容,这些文件通常很大,放在hdfs上。我没有好的方法,我以前偶尔查看其中内容都是直接get到本地然后用lzop解压缩然后再more的。这样做当你偶尔使用的时候即使文件稍微大点,也许也是可以接受的。但现在我需要常常grep里面的内容,就不那么欢乐了。 所以写了个shell脚本lzoc[ lzo cat],用来专门查看HDFS里LZO文件的内容,正常情况下它不输出任
spark开发笔记-scala 读lzo文件两种写法
spark开发笔记-scala 读写lzo文件两种写法 方法一: val files = sc.newAPIHadoopFile("s3n:/// 方法二: val files = sc.newAPIHadoopFile[LongWritable, Text, LzoTextInputFormat]("s3n:///
Snappy,Lzo,bzip2,gzip,deflate文件解压
Snappy,Lzo,bzip2,gzip,deflate 都是hive常用的文件压缩格式,各有所长,这里咱们只关注具体文件的解压 一、先贴代码: package compress; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.
java 压缩和解压lzo文件
1、依赖 org.anarres.lzo lzo-core 1.0.0 org.anarres.lzo lzo-hadoop 1.0.0 org.apache.hadoop hadoop-core 1.0.3 如果在eclipse里无法用maven插件下载这些依赖包,则需要手动将这三个包安装到本地maven库中,手动安装请参考maven手动安装jar及源码 2、测试
Spark平台中,对lzo压缩文件的读取--Scala实现
#记录一个坑#在Spark中,有时需要对lzo压缩文件的读取。这里采用的是newAPIHadoopFile()来进行读取 val configuration = new Configuration() configuration.set(&quot;io.compression.codecs&quot;, &quot;org.apache.hadoop.io.compress.DefaultCodec,org.apac...
spark下读写lzo文件(java)
1、编译安装hadoop-lzo 这个网上已经说的很详细了,具体可以参考这个链接: hadoop使用LZO压缩 http://running.iteye.com/blog/969800 2、具体如何配置lzo,上面的文档已经有了,但是为了讨论问题,这里再复制一下: a、修改hadoop配置文件core-site.xml  Xml代码
hadoop中的LzoCodec和LzopCodec
hadoop中的LzoCodec和LzopCodec LzoCodec比LzopCodec更快, LzopCodec为了兼容LZOP程序添加了如 bytes signature, header等信息 如果使用 LzoCodec作为Reduce输出,则输出文件扩展名为".lzo_deflate",它无法被lzop读取;如果使用LzopCodec作为Reduce输出,则扩展名为".
spark中读取hdfs中文件出错
scala> val rdd1 = sc.textFile("hdfs://master:9001/spark/spark02/directory/") 14/07/19 17:09:36 INFO MemoryStore: ensureFreeSpace(138763) called with curMem=0, maxMem=309225062 14/07/19 17:09:36 INFO
java读写hdfs文件
前言 最近接触了分布式文件存储系统FastDFS,但FastDFS是底层是用C语言写的,因此安装的时候还需要make,这一点很是不爽。自己之前研究过Hadoop,其中的hdfs就是一个分布式文件系统,而且Hadoop是用java语言编写的,因此考虑能否用hdfs来代替FastDFS。 经过反复实践,基本能够远程连接hdfs进行文件的操作了,直接上代码。本示例的前提是先启动hdfs文件系统,关于如何
读取hdfs上的文件
上传文件在hdfs上,访问namenode节点:ip:50070 读取hdfs的java代码如下: public void ReadFile(String hdfs) throws IOException { Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(UR