Hive查询执行:失败,异常java.io.IOException:org.apache.avro.AvroTypeException:找到double,期待联合

时间:2017-08-24 15:43:08

标签: java apache hadoop hive bigdata

我正在尝试执行一个简单的

select * from table limit 1;

外部表上的配置单元中的语句。但是面对失败的行为:

java.io.IOException:org.apache.avro.AvroTypeException: Found double, expecting union. 

有人能帮我理解这意味着什么吗?我检查了模式文件,并且已经给出了“default”:null。

发生此异常的确切原因是什么?

我尝试了解an already existing discussion

架构看起来像这样:

{"type":"record",
 "name":"VISIBILITY",
 "namespace":"pentaho_etl",
 "fields":[ {"name":"ID",               "type":["null","long"],     "default":null},
            {"name":"VERSION_ID",       "type":["null","long"],     "default":null},
            {"name":"IMP_CLASS",        "type":["null","string"],   "default":null},
            {"name":"NAME",             "type":["null","string"],   "default":null},
            {"name":"DL_SCHEMA_VERSN",  "type":["null","long"],     "default":null},
            {"name":"DL_FEED_TM",       "type":["null","string"],   "default":null},
            {"name":"DL_WFID",          "type":["null","long"],     "default":null},
            {"name":"DL_ENT_NM",        "type":["null","string"],   "default":null},
            {"name":"DL_JID",           "type":["null","long"],     "default":null},
            {"name":"DL_DATASET_ID",    "type":["null","long"],     "default":null},
            {"name":"DL_FD_DT",         "type":["null","string"],   "default":null}
        ]
}

1 个答案:

答案 0 :(得分:1)

我知道,这是一个古老的问题,但尚未得到答案,因此,我几乎不了解有关此问题的信息,从而对他人有所帮助。

这是一个非常普遍的问题,由于表架构与avro文件中包含的架构之间的不匹配而导致我们面临。

尽管avro文件是二进制文件,但您可以在任何文本编辑器中将其打开,并从前几行获取其架构。该模式与表的模式不匹配,您可以使用show create table table_name获得该模式。 然后,您可以逐列比较这两种架构,以查找任何差异,例如您的avro将一列显示为双列,但您的架构可能会将其显示为字符串。