簡體   English   中英

Python - 使用 Subprocess 的 Hive 命令 - 結果為空

[英]Python - Hive commands using Subprocess - empty results

我正在使用子進程在 python 中運行 hive 命令,但得到空結果。 如果我從 hive 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+"<----"  

它正在返回空數據幀。

請在這件事上給予我幫助

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') 並設置 sep='\\t' ,您可能需要查找 pandas api 以找到有關 read_csv() 的更多用法。

你應該在 17.1.2 中查找關於 Popen Object.it 的 subprocess api。它給你一個關於 stdout=PIPE 的警告。 https://docs.python.org/2/library/subprocess.html#frequently-used-arguments

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM