我有一个java的hadoop作业,它有序列输出格式:
job.setOutputFormatClass(SequenceFileOutputFormat.class);
我想用Parquet地板来代替。我试着用天真的方式来设定:
job.setOutputFormatClass(ParquetOutputFormat.class);
ParquetOutputFormat.setOutputPath(job, output);
ParquetOutputFormat.setCompression(job, CompressionCodecName.GZIP);
ParquetOutputFormat.setCompressOutput(job, true);
但在将作业结果写入磁盘时,bob失败了:
Error: java.lang.NullPointerException: writeSupportClass should not be null
at parquet.Preconditions.checkNotNull(Preconditions.java:38)
at parquet.hadoop.ParquetOutputFormat.getWriteSupport(ParquetOutputFormat.java:326)
似乎,Parquet地板需要一个模式te设置,但我找不到一个手册或指南,如何在我的情况下这样做。我的 Reducer
类尝试使用 org.apache.hadoop.io.LongWritable
作为一把钥匙 org.apache.mahout.cf.taste.hadoop.EntityEntityWritable
作为一种价值观。
我怎样才能为它定义一个模式?
1条答案
按热度按时间whlutmcx1#
你必须为你的工作指定一个“parquet.hadoop.api.writesupport”实现(例如:“parquet.proto.protowritesupport”表示protobuf或“parquet.avro.avrowritesupport”表示avro)
使用protobuf时,请指定protobufclass:
当使用avro时,引入如下模式: