Presto:如何在SerDe表中添加不含嵌套键值对的数组字段key1?
解决方法
很容易搞定这个问题,你只需要根据key1的JSON结构,在表定义中添加对应类型的字段就可以了,具体操作如下:
1. 创建包含key1的新表
直接在你原来的CREATE TABLE语句里补上key1字段就行——因为你的JSON里key1是一个包含字符串元素的数组,所以对应的Presto类型是ARRAY(varchar):
CREATE TABLE table_one ( key1 ARRAY(varchar), key2 ARRAY(ROW(key3 varchar, key4 varchar)), key5 varchar ) -- 这里补充你原有的SerDe配置,比如WITH (...) 或者 USING ... 语句
2. 给已存在的table_one添加key1字段
如果这个表已经创建好了,不用重新建表,直接用ALTER TABLE语句新增字段:
ALTER TABLE table_one ADD COLUMN key1 ARRAY(varchar);
关键提示
key1的JSON结构是["value1"],属于字符串数组,所以类型定义要和这个结构完全匹配,Presto的SerDe才能正确解析它的值。- 新增这个字段不会影响原有
key2和key5的正常读取,只要类型匹配,所有字段都能正常显示。
内容的提问来源于stack exchange,提问作者Bjørn
相关产品推荐
相关产品推荐

