hive可以反序列化avro字节到提供的模式吗?

v1uwarro  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(330)

我有avro文件要加载到配置单元,但我的文件是二进制的。应该使用什么反序列化程序将二进制avro获取到配置单元?
我不想在Hive中的二进制数据,但解码的二进制数据。
这就是我创建表的方式。
创建表kst7行格式serde'org.apache.hadoop.hive.serde2.avro.avroserde'存储为inputformat'org.apache.hadoop.hive.ql.io.avro.avrocontainerinputformat'outputformat'org.apache.hadoop.hive.ql.io.avro.avrocontaineroutputformat'tblproperties('avro.schema.url'='pathtoavsc.avsc');
当我使用上面的命令创建表时,数据会被加载,但当我执行select*from table时,会出现以下错误:
失败,出现异常java.io.ioexception:org.apache.avro.avrotypeexception:找到个字节,应为并集
avsc文件:

{
"namespace": "com.nimesh.tripod.avro.enrichment",
"type": "record",
"name": "EnrichmentData",
"fields": [
    {"name": "rowKey", "type": ["null", {"type":"string","avro.java.string":"String"}], "default": null},
    {"name": "ownerGuid", "type": ["null", {"type":"string","avro.java.string":"String"}], "default": null},
    {"name": "autotagsEnrichment", "type": ["bytes", "null", {
                                                        "namespace": "com.nimesh.tripod.avro.enrichment",
                                                        "type": "record",
                                                        "name": "AutotagEnrichment",
                                                        "fields": [
                                                            {"name": "version", "type": ["null", {"type":"string","avro.java.string":"String"}], "default": null},
                                                            {"name": "autotags", "type": ["null", {"type": "array", "items": {
                                                                                                                                 "namespace": "com.nimesh.tripod.avro.enrichment",
                                                                                                                                 "type": "record",
                                                                                                                                 "name": "Autotag",
                                                                                                                                 "fields": [
                                                                                                                                     {"name": "tag", "type": ["null", {"type":"string","avro.java.string":"String"}], "default": null},
                                                                                                                                     {"name": "score", "type": ["null", "double"], "default": null}
                                                                                                                                 ]
                                                                                                                             }}], "default": null}
                                                        ]
                                                    }], "default": null},
    {"name": "colorEnrichment", "type": ["bytes","null", {
                                                     "namespace": "com.nimesh.tripod.avro.enrichment",
                                                     "type": "record",
                                                     "name": "ColorEnrichment",
                                                     "fields": [
                                                         {"name": "version", "type": ["null", {"type":"string","avro.java.string":"String"}], "default": null},
                                                         {"name": "color", "type": ["null", {"type": "array", "items": {
                                                                                                                           "namespace": "com.nimesh.tripod.avro.enrichment",
                                                                                                                           "type": "record",
                                                                                                                           "name": "Color",
                                                                                                                           "fields": [
                                                                                                                               {"name": "color", "type": ["null", {"type":"string","avro.java.string":"String"}], "default": null},
                                                                                                                               {"name": "score", "type": ["null", "double"], "default": null}
                                                                                                                           ]
                                                                                                                       }}], "default": null}
                                                     ]
                                                 }], "default": null}
]
}
t40tm48m

t40tm48m1#

我想你在找 SERDEPROPERTIES 而不是 TBLPROPERTIES ```
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
WITH SERDEPROPERTIES ('avro.schema.url'='pathtoschema.avsc')

否则,请尝试选择单个字段,直到找到导致错误的字段,然后检查avscMap到配置单元表中的类型。

相关问题