Hive脚本及动态传参

本文详细介绍了Hive的参数使用,包括--hivevar和--hiveconf的区别,以及如何通过设置这些参数来影响Hive的行为。同时,提供了Hive SQL脚本示例和shell脚本调用方式,展示了如何在脚本中传递参数和执行Hive任务。此外,还讨论了如何结合Hive用户自定义函数进行脚本化操作,简化复杂分析任务。
摘要由CSDN通过智能技术生成

目录

一、Hive参数

二、常用参数说明

三、脚本

四、应用


一、Hive参数

[root]# hive -help
 -d,--define <key=value>          Variable subsitution to apply to hive
                                  commands. e.g. -d A=B or --define A=B
    --database <databasename>     Specify the database to use
 -e <quoted-query-string>         SQL from command line
 -f <filename>                    SQL from files
 -H,--help                        Print help information
    --hiveconf <property=value>   Use value for given property
    --hivevar <key=value>         Variable subsitution to apply to hive
                                  commands. e.g. --hivevar A=B
 -i <filename>                    Initialization SQL file
 -S,--silent                      Silent mode in interactive shell
 -v,--verbose                     Verbose mode (echo executed SQL to the
                                  console)

二、常用参数说明

--hivevar : 传参数 ,专门提供给用户自定义变量。
--hiveconf : 传参数,包括了hive-site.xml中配置的hive全局变量。用于定义HIVE执行上下文的属性(配置参数),可覆盖覆盖hive-site.xml(hive-default.xml)中的参数值,如用户执行目录、日志打印级别、执行队列等,常用的配置属性如下:
    hive.metastore.warehouse.dir 启动时指定用户目录,不同的用户不同的目录
    hive.cli.print.current.db 显示当前数据库
    hive.root.logger 输出日志信息
    hive.cli.print.header 显示列名称
    mapred.job.queue.name 执行队列名称
-f : hive sql脚本名称

三、脚本

1、hive_stu.sql

set io.compression.codecs=org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.SnappyCodec;
set hive.exec.compress.intermediate=true;
set mapred.map.output.compression.codec= org.apache.hadoop.io.compress.SnappyCodec;
set mapred.output.compress=true;
set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;
set hive.exec.max.created.files=1000000;
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;

select * from default.student limit ${num};

2、hive_stu.sh

#!/bin/bash
hive --hivevar num=2 --hiveconf "mapred.job.queue.name=queue1" -f hive_stu.sql

注意:如果有两个参数要再写一次--hivevar 参数:

#!/bin/bash
hive --hivevar num=2  --hivevar age=4 --hiveconf "mapred.job.queue.name=queue1" -f hive_stu.sql

3、说明

(1)如果使用默认配置,上面set的配置可省略;

(2)sql文件中的${num}可以改为${hivevar:num}

(3)sh文件命令中的 --hivevar num=2 可以换为 -d num=2,sql文件中也可以使用${hivevar:num}接收;

(4)sh文件命令中可以加入参数 --database "default" 指明数据库;

(5)可以在sh文件命令后加入 >/dev/null 2>&1 屏蔽日志输出

(6)如果sh文件中有时间参数要传递,可以按照如下格式:

#!/bin/bash
t_flag=$(date -d yesterday +%Y%m%d)
hive --hivevar day=$t_flag -f hive_stu1.sql >/dev/null 2>&1

四、应用

       hive sql脚本可以结合hive用户自定义函数进行脚本化操作。可以利用代码实现一些 满足需求逻辑的UDF,然后将此UDF注册到hive,并使用脚本调用这个函数进行分析即可。也就是hive的一些分析完全可以统一脚本化全靠sql分析,并不一定要结合saprk等框架进行大量代码的分析编写;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郝少

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值