PIG:无法将java.lang.String转换为org.apache.avro.util.Utf8,存储区内有AvroStorage

PIG:无法将java.lang.String转换为org.apache.avro.util.Utf8,存储区内有AvroStorage,java,hadoop,apache-pig,avro,Java,Hadoop,Apache Pig,Avro,我使用ApachePig来减少最初以CSV格式存储的数据,并希望以Avro格式输出。我的PIG脚本的一部分调用了一个javaudf,该UDF将一些字段附加到输入元组,并将修改后的元组传回。在使用以下命令执行此操作时,我正在修改输出PIG模式: Schema outSchema = new Schema(input).getField(1).schema; Schema recSchema = outSchema.getField(0).schema; recSchema.add(new Fiel

我使用ApachePig来减少最初以CSV格式存储的数据,并希望以Avro格式输出。我的PIG脚本的一部分调用了一个javaudf,该UDF将一些字段附加到输入元组,并将修改后的元组传回。在使用以下命令执行此操作时,我正在修改输出PIG模式:

Schema outSchema = new Schema(input).getField(1).schema;
Schema recSchema = outSchema.getField(0).schema;
recSchema.add(new FieldSchema("aircrafttype", DataType.CHARARRAY));
在我的UDF的公共模式outputSchemaSchema输入方法中

在exec方法中,我将java.lang.String值附加到输入元组,并将编辑后的元组返回到PIG脚本。这样,所有后续操作都可以正常工作。如果我使用PigStorage“”输出为CSV格式,则没有问题。当我尝试使用

STORE records INTO '$out_dir' USING org.apache.pig.piggybank.storage.avro.AvroStorage('
{
"schema":{ 
  "type":"record", "name":"my new data",
  "fields": [
    {"name":"fld1", "type":"long"},
    {"name":"fld2", "type":"string"}
  ]}
}');
我得到以下错误:

java.io.IOException: java.lang.ClassCastException: java.lang.String cannot be cast to org.apache.avro.util.Utf8
我曾尝试将字符字段作为char[]和Utf8类型附加到UDF中的元组中,但在我尝试写出数据之前,这让PIG很生气。我还尝试修改我的Avro模式,以允许每个字段中都有空类型


我正在使用PIG v0.11.1和Avro v1.7.5,非常感谢您的帮助。

这是PIG版本的问题。我的UDF构建在一个jar中,它具有包括PIG v0.8.1在内的依赖项。PIG版本0.8.1和0.11.1的混合导致了问题,AVRO与此无关