栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

hive -e with as生产环境用法样例

hive -e with as生产环境用法样例

hive -e "xxx" 可以运行引号内sql语句;

hive -f xxx 可以运行文件内sql语句;

with as 后可以写一个select的sql,可以用来构建一个临时表,表中的数据是自己写的sql生成的,然后可以用这个临时表的数据对其它表进行操作。

//with...as...需要定义一个sql片段,会将这个片段产生的结果集保存在内存中,后续的sql均可以访问这个结果集,作用与视图或临时表类似.

下方是 hive -e with as 用法样例,先用sql构建了一个临时表与数据,然后把临时表中的数据 插入/更新 到另一张表:

样例文件名:sync_data.sh

#实际执行的方法
function exe_sync(){
  hive -e "
    set hive.auto.convert.join = false;
    with tmp_user as (
      select 
      if(a.company || a.branch <> 'A70', a.comcode, '-') company,
      (case when a.branchtype = '1' then
        (case when a.agentgradekind = '' or a.agentgradekind is null then ''
        else substr(a.agentgradekind, 2, 4) end
        ) else a.F7 end
      ) roleFlag,
      a.agentname username,
      a.agentid id,
      null status

      from test.agentinfo a
    )
    
    INSERT overwrite table test.user  partition (import_date='$1')
    select
      $1,
      t.company,
      t.roleFlag,
      t.username,
      t.id,
      t.status,
      '001'
    from temp_user t  
  "
}

#执行,传一个参数,$1用
exec_sync 20211019

其它笔记:
1.hive的 insert into 与 insert overwrite 的区别:
insert into是普通的插入,insert overwrite会先清空表,再插入数据。

2.关于function,以下2种写法是正确的:

function exe_sync {}
function exe_sync(){}

以下1种写法会报错:

function exe_sync{}

function 方法名 , 后边必须加空格或括号,不加会报错。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/335989.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号