将 SQL 查询转换为 Hive 查询

Posted

技术标签:

【中文标题】将 SQL 查询转换为 Hive 查询【英文标题】:Convert SQL Query to Hive Query 【发布时间】:2019-07-12 11:36:48 【问题描述】:

有人可以帮我将此SQL 查询转换为hive 以获得相同的输出吗?

下面是查询

select count(email), 
       case substring_index(email,"@",-1) 
           when 'gmail.com'      then 'GMAIL' 
           when 'googlemail.com' then 'GMAIL' 
           when 'yahoo.com'      then 'YAHOO' 
           when 'ymail.com'      then 'YAHOO' 
            else 'OTHER' 
       END as DOMAIN  
   from DATA1 group by 2;

【问题讨论】:

我只是在一个表中有电子邮件,在执行上述查询后,我得到了低于输出.. 我也需要在 hive 中相同的输出。请建议我在 hive 中的查询。+----------------+--------+ |计数(电子邮件)|域名 | +--------------+--------+ | 3 |邮件 | | 2 |其他 | | 3 |雅虎 | +--------------+--------+ 欢迎来到 ***。请参考***.com/help/how-to-ask 和***.com/help/mcve。请使用您帖子的编辑选项并将相关代码 sn-ps 放在问题描述中。由于字符数限制和可读性较差,请勿在 cmets 部分发布问题详细信息。 【参考方案1】:
select count(email), 
       case split(email,'@')[1] 
           when 'gmail.com'      then 'GMAIL' 
           when 'googlemail.com' then 'GMAIL' 
           when 'yahoo.com'      then 'YAHOO' 
           when 'ymail.com'      then 'YAHOO' 
            else 'OTHER' 
       end as DOMAIN  
   from DATA1 
  group by 
    case substring_index(email,"@",-1) 
       when 'gmail.com'      then 'GMAIL' 
       when 'googlemail.com' then 'GMAIL' 
       when 'yahoo.com'      then 'YAHOO' 
       when 'ymail.com'      then 'YAHOO' 
       else 'OTHER' 
     end;

如果您希望 group by 2 工作,请阅读 group by position syntax 并相应地应用到您的配置单元版本。

【讨论】:

谢谢。我尝试在 hive 中用 split 函数替换子字符串。它正在工作 @Deepthi 满意请不要忘记采纳答案

以上是关于将 SQL 查询转换为 Hive 查询的主要内容,如果未能解决你的问题,请参考以下文章

GreenPlum SQL 查询转换成 Hive

将转换从 hive sql 查询转移到 Spark

hive sql的语法帮助在哪

将 Hive 查询转换为雪花

将 Postgre 查询转换为 Hive/Mysql

ANSI SQL PORTABILITY TO HADOOP HIVE 转换工具或宏