如何在配置单元中获取复杂数据类型列的长度

Posted

技术标签:

【中文标题】如何在配置单元中获取复杂数据类型列的长度【英文标题】:How to get length of complex datatype column in hive 【发布时间】:2017-05-17 23:41:26 【问题描述】:

我有一个 hive 表包含 arraymap 类型的列,我想过滤数组/映射列包含超过 N 个元素的记录,该怎么做?

DDL:

create table test (id string, v1 array<int>, v2 map<string,string>)

查询:

select * from test where length(v1)>10 or length(v2)>10

【问题讨论】:

【参考方案1】:
select * from test where size(v1)>10 or size(v2)>10

演示

create table test (id string, v1 array<int>, v2 map<string,string>);
insert into test select 1,array(1,2,3,4,5),map('K1','V1','K2','V2','K3','V3');

select  size(v1),size(v2)
from    test
;

+----+----+
| c0 | c1 |
+----+----+
|  5 |  3 |
+----+----+

【讨论】:

以上是关于如何在配置单元中获取复杂数据类型列的长度的主要内容,如果未能解决你的问题,请参考以下文章

如何在配置单元表中插入具有地图列的数据框

如何将 json 字符串数据类型列转换为配置单元中的映射数据类型列?

如何在 Spark SQL 中获取列的数据类型?

Cassandra/Datastax:如何在 java 中获取具有列表数据类型的列的值

如何在不知道列类型的情况下获取列的值

如何获取和比较pyspark中两个数据框中相似列的所有值的数据类型