首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法将Avro GenericRecord转换为Avro问题

无法将Avro GenericRecord转换为Avro问题
EN

Stack Overflow用户
提问于 2015-08-18 08:54:41
回答 1查看 1K关注 0票数 0

我在Avro是个新手。当我试图序列化我的数据时,在下面的代码中的"writer.write (datum,encoder);“行得到一个异常。

代码语言:javascript
复制
        byte[] byteData = null;
        ByteArrayOutputStream out = new ByteArrayOutputStream();

        try
        {             
            DatumWriter<GenericRecord> writer = new GenericDatumWriter<GenericRecord>(schema);  
            Encoder encoder = EncoderFactory.get().binaryEncoder(out, null);  
            writer.write(datum, encoder);  
            encoder.flush();  
            byteData = out.toByteArray();
        }
        catch (Exception e)
        {
            // TODO log error
            throw new RuntimeException (e.getMessage(), e);
        }
        finally
        {
            try
            {
                out.close(); 
            }
            catch (Exception e)
            {
                throw new RuntimeException (e.getMessage(), e);
            }
        }

        return byteData;

我的Avro架构是

代码语言:javascript
复制
{"type":"record",
"name":"MainSchema",
"namespace":"****",
"fields":[{"name":"GenericName","type":"string"},
        {"name":"DataCarrier",
         "type":{"type":"array",
                "items":{
                            "type":"record",
                            "name":"SubSchema",
                            "fields":[{"name":"DataValue",
                                        "type":{"type":"map","values":"string"}}]}}}]}

错误消息如下:(在我看来,avro编写器似乎不喜欢GenericRecord数据数组)

代码语言:javascript
复制
java.lang.ClassCastException: [Lorg.apache.avro.generic.GenericRecord; cannot be cast to java.util.Collection

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2015-12-03 07:40:51

结果是UTF-8到字符串的转换问题。解决了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32061955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档