之前有篇文章介绍ES数据探查的文章,出门左转可以看到。
刚刚踩到一个小坑:ES中的字段有可能是事实上的Array类型,虽然ES中并没有明确的支持Array,但是数据可以是平铺的一个列表,如"user": ["john", "lucy"]。我们在使用SQL建立ES-Spark映射表的时候,这个字段如果不明确指定是会映射成String类型的。查询肯定报错了。
解决办法是在options中使用参数es.read.field.as.array.include
把数组字段添加进来,如在es里 city字段是事实上的数组字段,options如下组织:
CREATE TABLE IF NOT EXISTS *** USING es OPTIONS (es.nodes 'xxx' es.port 'xxx',path 'xxx', es.read.field.as.array.include 'city')
若有多个数组字段,用逗号连接
网友评论