我正在尝试执行一个简单的
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}
]
}
答案 0 :(得分:1)
我知道,这是一个古老的问题,但尚未得到答案,因此,我几乎不了解有关此问题的信息,从而对他人有所帮助。
这是一个非常普遍的问题,由于表架构与avro文件中包含的架构之间的不匹配而导致我们面临。
尽管avro文件是二进制文件,但您可以在任何文本编辑器中将其打开,并从前几行获取其架构。该模式与表的模式不匹配,您可以使用show create table table_name
获得该模式。
然后,您可以逐列比较这两种架构,以查找任何差异,例如您的avro将一列显示为双列,但您的架构可能会将其显示为字符串。