hive中使用transform小例子

                                      hive中使用transform小例子

代码:

 

    set mapred.cache.archives=hdfs://host:54310/app/ns/test/php.tgz#home;
     set HDFS_PHP=home/know/odp/php  -c home/know/odp/php/etc/php.ini;
    add file `pwd`/test.php;
     set mapred.reduce.tasks=10

     insert overwrite directory '${output}/output/'
     select transform(b.qid,b.time)
     using '${hiveconf:HDFS_PHP} test.php'
     as qid,endcode_qid
     from (
    
      select /*+mapjoin(pm)*/
        qb.qid as qid,qb.create_time as time
      from test_q qb 
      join test_a pm
      on (qb.dt='${dt}'and pm.dt='qid'  and pm.id=qb.qid )
     ) b  

 注意:

 

1.上面的例子在hive上是不能直接运行的,因为上面的例子我是写在shell中的

2.用transform 时防止集群本身没有环境可以把环境依赖包打包

   用 set mapred.cache.archives=hdfs://host:54310/app/ns/test/php.tgz#home; 

    #home指的是一个包的别名,因此

    set HDFS_PHP=home/usr/php/php -c home/know/odp/php/etc/php.ini;

 这里直接使用home

3.如果是直接在shell 中运行hive -e 执行上述脚本,可能运行会报错

 hive 中的变量替换会与${hiveconf:} shell 中的变量替换冲突

 因此在shell中最好不用${hiveconf:}

4.home/know/odp/php 这个路径意思是说home是整个包的别名,/know/odp/php包被解压后的完整路径

     

    

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值