zoukankan      html  css  js  c++  java
  • hive中的传参与变量

    发现自己确实越来越笨,好在解决了。

    通常将hive的连接信息和sql语句写在一个脚本里面执行,这样看起来方便,修改起来也方便。

    但是最近由于sql语句太长了,所以拆开两部分。一部分是hive的连接,另一部分是sql文件。通过-f传参执行。

    beeline --hiveconf mapreduce.job.queuename=prod 
    --hivevar data_day=${curr_dt} 
    --hivevar product_a01=$product_a01 
    --hivevar product_a02=$product_a02 
    --hivevar product_b01=$product_b01 
    --hivevar product_b02=$product_b02 
    --hivevar product_b03=$product_b03 
    --hivevar product_c01=$product_c01 
    --hivevar product_d01=$product_d01 
     -u 'jdbc:hive2://localhost:10000/default' -n "user" -p 'pwd' -f /home/hadoop/etl/test.sql

    这里面用到了参数hivevar传递。

    之前一个文件时,接收变量都是直接$var1或者${var1},所以在test.sql中也是使用${var1}这样的方式来接收。但是发现放到一个shell循环中执行test.sql 出现不是想要的结果。

    select * from table where day = '${data_day}';

    最终在sql中修改成如下引用参数

    select * from table where day = '${hivevar:data_day}';

    hive -f传参有两种,

    一种是hiveconf 用于传递系统配置类的参数,当然用来传递自定义变量也可以。

    一种是hivevar 用于传递用户自定义变量

    作者:尤灯塔
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    将数据导入第三方系统
    希望可以看到自己的积分
    WF疑惑
    GUID
    wf HandlExternalEvent传递参数到自定义属性中
    今天做了一天的网站,烦恼
    WF 参数传递,今天终于把WORKFLOW的参数回传回来了
    今天开始在这里写博了
    寻求帮助,怪问题
    WF终于有了一点入门的感觉
  • 原文地址:https://www.cnblogs.com/30go/p/15337579.html
Copyright © 2011-2022 走看看