无法将python变量传递给hive -e

时间:2017-07-09 07:22:22

标签: python shell hadoop hive

我想使用python从用户那里获取表名,并使用select *获取表的内容。下面的代码告诉我在hive shell调用时设置一个变量。所以,如果它是一个硬编码的值。但如果我会给出像set x= $table_name这样的东西,它将无效。这意味着它无法将table_name的值传递给hive shell。

import subprocess
table_name=raw_input("enter the name of the table you want to get queried")
subprocess.call(['hive','-e','set x ="mytable";select  * from ${hiveconf:x}'])

链接Python variable passed as hive query告诉某种方式,但不确定我将如何使用它。

1 个答案:

答案 0 :(得分:0)

这是很久以前的事了,但我今天才看到这一点。这就是我在Hive中的表现:

import subprocess
table_name=raw_input("enter the name of the table you want to get queried")

# formulate your command line statement in a string variable
completeCmd = "hive -e  " + "'select * from {table} '".format(table = table_name )
subprocess.call(completeCmd, shell = True)

在python 3中,输入语句会改变:

table_name=input("enter the name of the table you want to get queried")

如果它不起作用,请告诉我。