我想使用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告诉某种方式,但不确定我将如何使用它。
答案 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")
如果它不起作用,请告诉我。