念念不忘
必有回响🎉

HiveSQL实现字符串拼接

上一篇介绍过《将Hive表与ElasticSearch关联》,由于需要考虑到如果数据计算有偏差,那么需要重新计算,Hive倒还好处理,但是ES就比较麻烦了,所以在Hive与ES关联的时候,就需要生成一个主键,而这个主键就是各个列(具备条件)的拼接字符串,那么在使用INSERT的时候就需要将这个ID给动态的拼接出来。

Hive支持的字符串拼接有两种内置的方法:CONCAT()和CONCAT_WS()。它们的区别就是CONCAT()就是单纯的字符串凭借,你传入什么最后就拼接成一整串。而CONCAT_WS(),则是将需要拼接的内容以指定分隔符分开。下面是这两个方法的示例:

CONCAT(string str1,string str2,string str3 …),该方法返回String类型的值

hive> select concat("str1","str2","str3","str4");
OK
str1str2str3str4
Time taken: 1.94 seconds, Fetched: 1 row(s)

CONCAT_WS(separator,string str1,string str2…),该方法返回String类型的值

hive> select concat_ws("$","str1","str2","str3","str4");
OK
str1$str2$str3$str4
Time taken: 0.034 seconds, Fetched: 1 row(s)

偷懒的话在Hive做类型转换的时候,可以使用CONCAT()将任意类型转换为String类型。

hive> select concat_ws("$",concat(22),concat(22),concat(22),concat(22),concat(22),concat(22));
OK
22$22$22$22$22$22
Time taken: 0.031 seconds, Fetched: 1 row(s)

一般类型转换会用到下面这种形式,具体内容会专门写一篇来说明(再水一篇)。

hive> select concat_ws("$",cast(22 as string),cast(22 as string),cast(22 as string),cast(22 as string),cast(22 as string),cast(22 as string));
OK
22$22$22$22$22$22
Time taken: 0.04 seconds, Fetched: 1 row(s)

 

赞(0) 打赏
未经允许不得转载:Charles's Blog » HiveSQL实现字符串拼接

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏