目录
一、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
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等框架进行大量代码的分析编写;
|