python执行hive脚本

#!/usr/bin/python
#-*-coding:utf-8 -*-
import subprocess
import traceback

sql = """
select * from dim_table.tests_table where day="2021-10-12" limit 500
"""
cmd = 'hive -e """'+sql.replace('"', "\'")+'"""'
print(cmd)
try:
    p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
    while True:
        buff = p.stdout.readline()
        print buff
        if buff == '' and p.poll() != None:
            break
except Exception as e:
    print("message is:%s" %(str(re)))
    traceback.print_exc();

shell 执行hive脚本(方式一)

echo "开始执行hvie脚本"
# shell 执行hive加载数据到hive表格命令
load data local inpath 'localpath' [overwrite] into table tablename
# shell 执行查询命令
hive -e """select * from dim_table.tests_table where day=\'2021-10-12\' limit 500"""

shell 执行hive脚本(方式二)

# 键入hive,进入hive交互模式。Set可以查看所有环境设置参数,并可以重设。
[root@nodez001 ~]# hive
Use database        选择库
quit/exit   		退出Hive的交互模式 
set –v  			显示Hive中的所有变量
set <key>=<value>	设置参数
执行本地shell:!<cmd> 	交互模式下可执行shell命令,例如(查看linux根目录下文件列表:"!ls -l /;")
操作云命令:dfs <command>   	交互模式下直接操作hadoop命令如 dfs fs –ls
Hql语句      			执行查询并输出到标准输出
add [FILE|JAR|ARCHIVE] <value> [<value>]* 	增加一个文件到资源列表
list FILE       	列出所有已经添加的资源

sql=$(cat <<!EOF
USE pmp;
set mapred.queue.names=queue3;

select * from dim_table.tests_table where day='2021-10-12' limit 500
!EOF)
hive -e  "$sql"

shell执行hive脚本(方式三)

将hql语句保存为独立文件,后缀名不限制,可以用.q或者.hql作为标识:
A,这个文件在cli模式下,用source命令执行,如:source ./mytest.hql
B,在shell中执行命令,如:hive -f  mytest.sql
Hive指定预执行文件命令“hive –i”(或叫初始化文件)
命令:hive -i hive-script.sql
	在hive启动cli之前,先执行指定文件(hive-script.sql)中的命令。
	即允许用户在cli启动时预先执行一个指定文件,一些常用的环境参数设置,频繁执行的命令,可以添加在初始化文件中,如下:
    某些参数设置
        set mapred.queue.names=queue5;
        SET mapred.reduce.tasks=16;
    添加udf文件
        add JAR ./trans_data-hive-udf.jar;
    设置Hive的日志级别 
        hive -hiveconf hive.root.logger=INFO;
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐