2
首先,我創建了一個avro配置表,如下所示。將表的屬性從avro.schema.literal設置爲avro.schema.url後未更新Hive avro表架構
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"}
架構未更新。表只顯示了兩個字段,即user_id和username。
當模式按字面如下提供時,同樣的事情可以工作。
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。
但這不起作用。表架構沒有得到更新。
您是否找到了解決方法? –
你找到了這個答案嗎?在hive表中可以使用文字和網址架構。 –
找到答案ALTER TABLE。 UNSET TBLPROPERTIES('avro.schema.literal');如果你這樣做,那麼'avro.schema.url'將被放寬。 –