我是 Hive 新手,我正在尝试从整个单词列中计算不同的单词值。
id-------------------------------------单词
435400064446779392 [{"words_value":"i","words_id":"1"},{"words_value":"讨厌","words_id":"2"}]
请注意,words 列是一个数组。我有更多的行,但上面是一个例子。 我尝试过:
从 T1 GROUP BY Words.words_value AND ROLLUP 中选择 Words.words_value,count(words.words_value);
但它在每一行中都很重要。 有人知道吗?
最佳答案
explode UDTF 对于将嵌套数据结构转换为可使用普通 SQL 语句的普通表非常有用。由于您有一个 map 数组,因此您需要使用explode 两次。
select count(distinct value) from
( select explode(col) from
( select explode(words) from mytable ) subquery1
) subquery2
where
key = "words_value";
关于count - Hive 对 map 数组的不同计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21985053/