Hive外部表JSON字段冲突类型-字段名预期错误

我有一个外部配置单元表,该表指向带有JSON文件的目录,该目录包含多个JSON文档。我正在尝试在Zeppelin笔记本中创建Hive SQL语句以从该文件读取并插入内部ORC表中。我的查询没有任何联接或侧面视图,只是直接选择;

%jdbc(hive)

add jar /usr/hdp/current/hive-client/lib/json-serde-1.3.8-jar-with-dependencies.jar;

-- Load the ORC Internal Table
insert  overwrite
table   rapidengage.it_engagement_selectedvalues
select  et_engagement_selectedvalues.parentpath                        as `_id`,et_engagement_selectedvalues.splitpath.clientTypeSelection,et_engagement_selectedvalues.splitpath.createdNewEcUrl,et_engagement_selectedvalues.splitpath.eafTemplateSelection,et_engagement_selectedvalues.splitpath.gfsidSelection,et_engagement_selectedvalues.splitpath.territorySelection
from    rapidengage.et_engagement_selectedvalues

这继续引发非常冗长的错误,但是当我深入研究该错误时,似乎可执行的错误消息如下;

原因:org.apache.hadoop.hive.serde2.SerDeException:java.io.IOException:预期字段名称

我尝试将以下属性添加到我的外部表中,这由SO上的其他线程建议,这些线程在搜索上述错误消息时作为结果返回;

'serialization.last.column.takes.rest'='true'

如果我只尝试运行select并注释掉插入内容,则它在齐柏林飞艇中成功,但是我认为这是一种幻想。 Zeppelin UI对其在结果中显示的内容有限制,因此我怀疑它仅获取前N条记录,如果未遇到错误,那么一切都很好。此外,当我尝试从外部表中读取内容,但将下面查询中的每个字段都重写为硬编码字符串时,尝试插入仍然会遇到相同的错误。因此,我相信问题出在读而不是写。

我在这里真的很茫然……我认为我唯一的“线索”是,在该JSON文件中的所有JSON文档中,我可以看到在一个路径上存在不同的结构。在外部表的splitpath字段中,我看到一些文档,其架构如下;

struct<
    clientTypeSelection:string,createdNewEcUrl:boolean,eafTemplateSelection:string,eafTemplates:array<string>,gfsidSelection:array<string>,prodCodeSelection:array<
        struct<
            productLineId:string,productCode:string
        >
    >,territorySelection:string,taxPcsOrPFSForAFS:string
>

...然后我看到其他文档,其架构如下;

struct<
    clientTypeSelection:string,pcsOrpfs:struct<pcsOrPfsCompleted:boolean>,prodCodeSelection:array<string>,territorySelection:string>
>

我知道并不是每个JSON文档都具有相同的字段,因此我们尝试确保获得一个完整的JSON文件,从中可以推断Hive的架构。但是,当我查看 prodCodeSelection 时,我看到它具有简单的字符串数组或复杂的对象数组,我不禁怀疑这是问题所在吗?我一直在使用包含该字段对象数组的架构,因此我的想法是“找不到字段”是指对象数组中字段的名称吗?当它遇到其中一个只是字符串数组的文档之一时,显然没有获取字段,这就是错误吗?

PEIYOUXIANG 回答:Hive外部表JSON字段冲突类型-字段名预期错误

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2949096.html

大家都在问