如何使用最新的 AVRO 模式文件更新配置单元表元数据
Posted
技术标签:
【中文标题】如何使用最新的 AVRO 模式文件更新配置单元表元数据【英文标题】:How to update hive table metadata with latest AVRO schema file 【发布时间】:2018-11-30 11:42:59 【问题描述】:失败:RuntimeException MetaException(消息:org.apache.hadoop.hive.serde2.SerDeException 遇到 AvroSerdeException 确定架构。返回信号架构以指示问题:无法从给定路径读取架构:/master_data/XYZ/DA12195/business_date= 20181126/_schema.avsc)
架构文件存在于 business_date=20181129 的新分区中,但 hive 表仍指向旧分区中的架构文件。
【问题讨论】:
你可以试试msck repair table <table_name>
这没有帮助,因为我们已经刷新了 AVRO 表的基础数据,然后将其复制回来。在这种情况下,表元数据不正确。
这是什么意思`我们已经刷新了AVRO表的底层数据然后将其复制回来`你是删除整个表的数据还是应该一个分区?
我们在测试阶段删除了整个表的 AVRO 数据。现在我们已经从 Hadoop TRASH 中检索数据集。但是尝试在表上查询,它失败并出现上述错误。
【参考方案1】:
删除外部表并重新创建它有助于解决此问题。 MSCK REPAIR 命令也有助于重新创建配置单元分区。
文件 _schema.avsc 文件包含有关 AVRO 表的架构信息。我们需要将配置单元表元数据指向该文件的正确位置。需要更新 serde 和 tblproperties 才能进行此更改
【讨论】:
以上是关于如何使用最新的 AVRO 模式文件更新配置单元表元数据的主要内容,如果未能解决你的问题,请参考以下文章