Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python执行hive sql

Python执行hive sql

作者头像
py3study
发布于 2020-01-07 02:31:03
发布于 2020-01-07 02:31:03
4.2K00
代码可运行
举报
文章被收录于专栏:python3python3
运行总次数:0
代码可运行

该python脚本是用于执行hive脚本的,需要设置hive的可执行环境变量,其实质转化为shell下命令 hive -e 'sql语句’ 的方式执行,然后把结果重定向到控制台显示。注:由于该脚本是直接调用shell中的hive命令,所以需要在安装hive的服务器上执行。

使用前置条件:(1)安装hadoop和hive,并启动完hadoop;(2)已配置好hive的环境变量,确保在shell中能正常执行hive。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/usr/bin/python
#-*-coding:utf-8 -*-

import subprocess
import traceback

sql = """
# 书写hql脚本
;
"""
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,re:
    print "message is:%s" %(str(re))
    traceback.print_exc();

脚本举例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/usr/bin/python
#-*-coding:utf-8 -*-
import subprocess
import traceback
sql = """
  select * from app_tianhe_zym_item_reason_dtl_da where order_dt = '2016-01-26' limit 10;
"""
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,re:
    print "message is:%s" %(str(re))
    traceback.print_exc();
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/09/09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
基于AI(ChatGPT、DeekSeek)的渗透测试系统分析
PentestGPT 是一个基于 ChatGPT 的渗透测试工具,旨在通过交互式模式指导渗透测试人员完成测试过程。它结合了自动化工具(如 nmap 和 sqlmap)和 ChatGPT 的智能指导能力,帮助用户逐步完成渗透测试任务。
用户4682003
2025/06/16
2120
基于AI(ChatGPT、DeekSeek)的渗透测试系统分析
Python 调用adb命令
subprocess包主要功能是执行外部命令(相对Python而言)。和shell类似。
AnRFDev
2021/02/01
4.6K0
[python]python执行shell实时输出
2.readline可能导致卡死,官方推荐使用communicate,但是如果还是使用subprocess.PIPE,执行完命令后才能拿到标准输出,替换成sys.stdout就能达到实时输出效果,代码附上
云未归来
2025/07/19
870
Python 运用zabbix开发简易巡检工具
利用SSH或者Zabbix监控,配合Django开发框架,改造出属于自己的监控平台,实现包括主机图形,自动发现,计划任务,批量cmd执行,服务监控,日志监控等功能,由于公司机器混乱,基本上市面上的所有设备都能找到,监控这些不同型号不同系统的主机需要分别对待,我们就借助各种开源项目来做一个简单的巡检工具,方便工作需要。
王 瑞
2022/12/28
1.7K0
Python 运用zabbix开发简易巡检工具
python 协程池和pool.map用法
上面直接将所有任务加到列表中,然后一次性,全部异步执行。那么同一时刻,最多有多少任务执行呢?
py3study
2020/02/25
3.7K0
Python3 执行系统命令并获取实时回显
最近在改造一些打包的逻辑,原来在 Windows 下是基于批处理制作的,由于批处理用起来不是很方便,一些实时的计算基本无法胜任,所以转向 Python3。但在以前脚本的基础上很多是需要调用系统命令的比如 VS 编译一个项目,我们需要获取实时的回显知道编译的结果和进度。所以就有了以下方法:
我与梦想有个约会
2023/10/21
5140
Flask-SocketIO Demo
最近在做一个Flask程序,其中一个需求是前端传递参数,后端接收到后调用命令行,并将控制台打印的日志实时推送到前端显示。经过搜索得知想要实现该功能大概有2种方式:1种是利用调度工具Celery,另1种就是Websocket。 准备 安装Flask-SocketIO库 $ pip install flask-socketio 编写一个Flask程序 from flask import Flask, render_template, request from flask_socketio import Sock
Naraku
2021/07/28
8790
Flask学习实践使用案例
描述: 使用Flask我们可以非常方便的写出一个API请求接口或者网页, 此处我将利用该接口执行存在的shell脚本,利用rsync命令同步文件夹与文件,同时将结果回显到模板文件中。
全栈工程师修炼指南
2022/09/28
2850
Python实现cmd命令连续执行
之前是想写一个微信控制程序,通过登录网页微信,可以直接执行命令行代码。也不用ssh登录了,想法很方便。
烟草的香味
2019/12/31
4.1K0
Python,Shell 和 三个标准文件
场景 使用 Python 执行 Shell 命令(或者脚本),有两种执行场景: 等待,直到命令执行完毕,一次性获取返回结果,做一些你想做的事情; 命令执行的同时,实时获取命令的持续输出,做一些你想做的事情。 例子 第一种场景:ls -a (list segment,Unix系统中使用非常频繁的命令)用于列出所有文件,文件列出之后就自动退出了。 第二种场景:ping zhihu.com 它会持续的输出结果,并不会退出(当然可以加 -t n 来指定 n 次之后结束退出,这样就属于场景一了,本文我们不指定 n)
临书
2018/03/07
1.5K0
记录Python 调用 subprocess.Popen 卡死解决办法
subprocess.Popen 是 Python 中用于执行外部命令或程序的模块之一。它提供了创建子进程并与之交互的灵活方式。以向 subprocess.Popen 传递一个命令字符串或命令列表,它将调用操作系统的 shell 来执行该命令。
用户4945346
2024/02/17
2.5K0
记录Python 调用 subprocess.Popen 卡死解决办法
python 从subprocess运行的子进程中实时获取输出
shell =false 意思是command 使用的不是linux shell指令,如果要用shell 指令如ls 要将false 变成true, 通过指定stderr=subprocess.STDOUT,将子程序的标准错误输出重定向到了标准输出,以使我们可以直接从标准输出中同时获取标准输出和标准错误的信息。 p.poll() 返回子进程的返回值,如果为None 表示 c++子进程还未结束. p.stdout.readline() 从 c++的标准输出里获取一行.
多凡
2020/02/11
11.6K0
python笔记:使用Python执行命令
python3 import subprocess def cmd(cmdstr): return subprocess.check_output(cmdstr, shell=True) python2 import commands commands.getoutput('ls /bin/ls') 如果需要实时看进度(比如ping): import subprocess def cmd(cmdstr): ps = subprocess.Popen(cmdstr, stdin=subpro
超级大猪
2019/11/22
1.1K0
python执行系统命令的方法
    做为系统工程师来说,经常会用到python脚本去调用一下系统命令,现把经常使用的集中调用方法总结如下:
py3study
2020/01/07
4.1K0
python中执行DOS命令的3种方法小
现在大部分人都喜欢使用Popen。Popen方法不会打印出cmd在linux上执行的信息。的确,Popen非常强大,支持多种参数和模式。使用前需要from subprocess import Popen, PIPE。但是Popen函数有一个缺陷,就是它是一个阻塞的方法。如果运行cmd时产生的内容非常多,函数非常容易阻塞住。解决办法是不使用wait()方法,但是也不能获得执行的返回值了。
py3study
2020/01/09
2.4K0
Python 执行系统命令
Python 编程过程中经常会用到系统命令,本文记录实现方法。 系统命令 作为胶水语言,Python可以很方便的执行系统命令,Python3中常用的执行操作系统命令有以下方式 os.system() os.popen() subprocess 模块 os.system 执行命令但无法获取取命令输出时,可以使用 os.system os.system() 是C语言 system() 函数的封装,返回命令的退出状态码,命令执行结果输出到标准输出(stdout/窗口)。 system函数可以将
为为为什么
2022/08/10
2K0
Python 技术篇-通过管道命令获取cmd执行的结果,获取os.system()、subprocess.Popen()执行命令返回的结果
正常的 os.system() 执行完后只会返回个执行状态值,返回的 0 表示执行成功,1 表示执行失败。 如果想要获取到执行后的结果集,就需要用到管道命令 os.popen(),然后用 read() 方法可以读到返回的结果。subprocess.Popen() 命令也可以获取返回的结果。
小蓝枣
2021/12/01
8.7K1
Python 技术篇-通过管道命令获取cmd执行的结果,获取os.system()、subprocess.Popen()执行命令返回的结果
python raid monitor
import os ,time ,sys, traceback,commands,subprocess
py3study
2020/01/12
6940
python中执行shell命令的几个方
最近有个需求就是页面上执行shell命令,第一想到的就是os.system, 代码如下:
py3study
2020/01/06
3.2K0
python调用shell命令小结
 在写python脚本的时候,经常需要调用系统命令,常用的python调用系统命令的方法主要有subprocess.call和os.popen。默认情况下subprocess.call的方法结果是返回值,即1或0,而os.popen则是命令运行的结果,可以用readlines(读取所有行,返回数组)或者read(读读取所有行,返回str)来读取。
py3study
2020/01/06
1.4K0
相关推荐
基于AI(ChatGPT、DeekSeek)的渗透测试系统分析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档