1、读取文件是LzoTextInputFormat.class

2、设置

JavaSparkContext jsc = new JavaSparkContext(conf);
Configuration hconf = jsc.hadoopConfiguration();
hconf.set("textinputformat.record.delimiter", "[*&^%]");
    
hconf.set("io.compression.codecs", "org.apache.hadoop.io.compress.DefaultCodec,com.hadoop.compression.lzo.LzopCodec");
hconf.set("io.compression.codec.lzo.class", "com.hadoop.compression.lzo.LzoCodec");

JavaPairRDD<LongWritable, Text> newAPIHadoopFile = jsc.newAPIHadoopFile(args[4], LzoTextInputFormat.class,LongWritable.class,Text.class, hconf);

由于LzoTextInputFormat默认是按行读取,而我需要按照日志记录起始标识符读取行。

故修改源码:

com.hadoop.mapreduce.LzoTextInputFormat 

spark读取lzo文件并指定日志记录起始标识符

com.hadoop.mapreduce.LzoLineRecordReader

spark读取lzo文件并指定日志记录起始标识符

实现功能!

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-06
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-05-21
  • 2021-11-27
  • 2022-12-23
  • 2021-11-18
  • 2022-01-19
  • 2021-10-21
相关资源
相似解决方案