hadoop - 如何使用配置单元计算由 "|"分隔符分隔的每列中的单词数?

标签 hadoop hive hiveql

输入数据为

+----------------------+--------------------------------+
|      movie_name      |             Genres             |
+----------------------+--------------------------------+
| digimon              | Adventure|Animation|Children's |
| Slumber_Party_Massac | Horror                         |
+----------------------+--------------------------------+

我需要像

这样的输出
+----------------------+--------------------------------+-----------------+
|      movie_name      |             Genres             | count_of_genres |
+----------------------+--------------------------------+-----------------+
| digimon              | Adventure|Animation|Children's |               3 |
| Slumber_Party_Massac | Horror                         |               1 |
+----------------------+--------------------------------+-----------------+

最佳答案

select  *
       ,size(split(coalesce(Genres,''),'[^|\\s]+'))-1  as count_of_genres

from    mytable

该解决方案涵盖不同的用例,包括 -

  • NULL 值
  • 空字符串
  • 空标记(例如 Adventure||AnimationAdventure| |Animation )

关于hadoop - 如何使用配置单元计算由 "|"分隔符分隔的每列中的单词数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43573144/

相关文章:

hadoop - 控制 MultipleOutputFormat 文件子路径

sql - 从 SQL 中的数组中删除空值

scala - 如何在Spark sql中访问HIVE ACID表?

hadoop - hive :我如何加入一个有日期间隔的条件?

hadoop - 将行值合并到列

ubuntu - ubuntu上的Hadoop ssh安装错误-连接被拒绝

python - 如何在 Spark 中关闭 INFO 日志记录?

mysql - 无法运行 Hive 子查询

hadoop - 在配置单元表中为唯一 ID 添加一个新列

hive - 在Hive中, 'positive'函数有什么作用?