Python的 - 空的结果 - 使用子过程蜂巢命令(Python - Hive commands

2019-09-29 17:21发布

我使用的子进程来运行蟒蛇蜂巢的命令,但我得到空的结果。 如果我从蜂巢CLI运行相同的命令,我得到结果。

 query = "set hive.cli.print.header=true;use mydb;describe table1;"  
 process = subprocess.Popen( ["ssh", "hadoop" , "hive", "-e", "%r" % query], stdout = subprocess.PIPE, stderr = subprocess.PIPE )  
 data = [line.split('\t') for line in process.stdout]  
 cols = list(itertools.chain.from_iterable(data[:1]))  
 df = pd.DataFrame(data[1:], columns = cols)  
 print "==>"+df+"<----"  

它的返回空数据帧。

请在这件事上给予我帮助

Answer 1:

myfile=open("query_result.tsv", 'w')
p=subprocess.Popen("your query",
        shell=True,
        stdout=myfile,stderr=subprocess.PIPE)
stdout,stderr = p.communicate()
if p.returncode != 0:
    print stderr
    sys.exit(1)

MYFILE是TSV文件,你可以使用pandas.read_csv(SEP =“\ t”),并设置九月=“\ T”,你可能需要查找大熊猫API来找到read_csv更多的使用()。

你应该查找子API中17.1.2关于POPEN Object.it给你一个关于标准输出=管警告。 https://docs.python.org/2/library/subprocess.html#frequently-used-arguments



文章来源: Python - Hive commands using Subprocess - empty results