spark 下读写lzo ⽂件(java )阮经天 赵又廷
1、编译安装hadoop-lzo
孙红雷第一任妻子这个⽹上已经说的很详细了,具体可以参考这个链接
2、具体如何配置lzo,上⾯的⽂档已经有了,但是为了讨论问题,这⾥再复制⼀下:
a 、修改hadoop 配置⽂件l
表达雄心壮志的诗句
b、 修改hadoop 配置⽂件l 看到了吧,这两个地⽅最终压缩的编码格式都是com.hadooppression.lzo.LzoCodec
3、然后往hadoop 写⼊相关⽂件,我⽤的是lzop 格式,同时⽣成索引⽂件(java 实现)
4、然后在spark 中读取
SparkConf conf = new SparkConf().setAppName("test");
JavaSparkContext sc = new JavaSparkContext(conf);
Configuration configuration = new Configuration();
configuration.set("mapred.outputpress", "true");
configuration.set("dec", "com.hadooppression.lzo.LzopCodec");
String fileName = "hdfs://ip:port//data/.../.../*/info_credit_card.lzo";
JavaPairRDD<LongWritable, Text> pairRDD =
LzoTextInputFormat.class,
LongWritable.class,
Text.class,
configuration);pairRDD通过flatMap转为⾏,将会得到正确的值,并且已经做过分⽚;
疑惑:1、在配置⽂件l 和l 都是lzoCodec ,但是在读写的时候却必须⽤lzopCodec , 我试图直接⽤lzoCodec ,却总是失败,⽽⽹上的例⼦都是lzopCodec ?
Xml 代码
读取配置文件失败
灭菌1.
<property>  2.
李佳琦回应抽烟<name&decs </name>  3.
<value>org.apache.hadoop.iopress.GzipCodec,org.apache.hadoop.iopress.DefaultCodec,com.hadoop pression.lzo.LzoCodec,org.apache.hadoop.iopress.BZip2Codec </value>  4.
</property>  5.
<property>  6.
<name&dec.lzo.class </name>  7.
<value>com.hadooppression.lzo.LzoCodec </value>  8.  </property>
Xml 代码
1.
<property>  2.
<name>mapredpress.map.output </name>  3.
<value>true </value>  4.
</property>  5.
<property>  6.
<name>mapred.dec </name>  7.
<value>com.hadooppression.lzo.LzoCodec </value>  8.  </property>
2、当然,⽤lzo的Stream⽅式直接读写hdfs⽂件是没有问题的,但这样就⽆法使⽤JavaSparkContext的newAPIHadoopFile⽅法了,该⽅法可以直接按照规则匹配⽂件,⽣成分布式的rdd