gpt4 book ai didi

hadoop - 将表的属性从 avro.schema.literal 设置为 avro.schema.url 后,Hive avro 表架构未更新

转载 作者:可可西里 更新时间:2023-11-01 14:52:22 25 4
gpt4 key购买 nike

首先,我创建了一个如下所示的 avro hive 表。

CREATE EXTERNAL TABLE user
STORED AS AVRO
LOCATION '/work/user'
TBLPROPERTIES ('avro.schema.literal'='{"type":"record","name":"user", "fields": [{ "name":"user_id", "type":["null","int"], "default":null, "columnName":"user_id", "sqlType":"4" }, { "name":"username", "type":["null","string"], "default":null, "columnName":"username", "sqlType":"-1" }], "tableName":"user"}')

我能够看到数据。

我更改了一些架构,但这次是使用以下代码完成的。

ALTER TABLE user SET TBLPROPERTIES ('avro.schema.url'='/work/avro/user_schema.avsc')

url 中的新架构如下。

{"type":"record","name":"user", "fields": [{ "name":"user_id", "type":["null","int"], "default":null, "columnName":"user_id", "sqlType":"4" }, { "name":"username", "type":["null","string"], "default":null, "columnName":"username", "sqlType":"-1" }, { "name":"city", "type":"string", "default":"Pune", "columnName":"city" }], "tableName":"user"}

架构未更新。表格仅显示 2 个字段,即 user_id 和用户名。

当模式以如下文字形式提供时,同样的事情会起作用。

ALTER TABLE user SET TBLPROPERTIES ('avro.schema.literal'='{"type":"record","name":"user", "fields": [{ "name":"user_id", "type":["null","int"], "default":null, "columnName":"user_id", "sqlType":"4" }, { "name":"username", "type":["null","string"], "default":null, "columnName":"username", "sqlType":"-1" }, { "name":"city", "type":"string", "default":"Pune", "columnName":"city" }], "tableName":"user"}');

但不是通过指定上面指定的 url。

但这行不通。表架构未更新。

最佳答案

avro 模式文件需要在 hdfs 中,引用如下。

TBLPROPERTIES ('avro.schema.url'='hdfs:///user/cloudera/categories.avsc')

关于hadoop - 将表的属性从 avro.schema.literal 设置为 avro.schema.url 后,Hive avro 表架构未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39930684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com