【问题标题】:Hive query execution: Failed with exception java.io.IOException:org.apache.avro.AvroTypeException: Found double, expecting unionHive 查询执行:失败并出现异常 java.io.IOException:org.apache.avro.AvroTypeException: Found double, Expecting union
【发布时间】:2017-08-24 15:43:07
【问题描述】:

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

select * from table limit 1;

外部表上 hive 中的语句。但面临执行失败:

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

谁能帮我理解这意味着什么?我已经检查了架构文件,并且已经给出了“默认”: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}
        ]
}

【问题讨论】:

  • 你能提供 avro 架构吗?
  • 您的架构文件中有几个错误,您确定使用的是同一个文件吗? (字段数组的第一个元素 - 它应该是“null”而不是“null”,字段数组的第 7 个元素 - 它应该是“DL_WFID”而不是 DL_WFID)
  • “描述表”是否显示与 avro 架构文件定义的架构相同?
  • @Shubhangi,我进行了所需的编辑。这是我在此处编写架构时的手动错误。是的,describe 表向我展示了正确的列和数据类型。

标签: java apache hadoop hive


【解决方案1】:

我知道,这是个老问题,但没有答案,因此,添加我对这个问题的了解很少的信息,这样,它可以帮助其他人。

这是一个很常见的问题,由于表架构与 avro 文件中包含的架构不匹配,我们面临。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 2021-05-01
    • 2020-08-03
    • 2019-07-14
    • 2019-12-15
    • 1970-01-01
    相关资源
    最近更新 更多