我尝试使用简单的命令通过python中的子进程访问hbase。以下代码提供了错误的输出:
import subprocess
cmd=['hbase','shell','list']
subprocess.call(cmd)
我没有给出hbase中的表列表,而是得到以下输出:
Usage: hbase [<options>] <command> [<args>]
Options:
--config DIR Configuration direction to use. Default: ./conf
--hosts HOSTS Override the list in 'regionservers' file
Commands:
Some commands take arguments. Pass no args or -h for usage.
shell Run the HBase shell
hbck Run the hbase 'fsck' tool
snapshot Create a new snapshot of a table
snapshotinfo Tool for dumping snapshot information
wal Write-ahead-log analyzer
hfile Store file analyzer
zkcli Run the ZooKeeper shell
upgrade Upgrade hbase
master Run an HBase HMaster node
regionserver Run an HBase HRegionServer node
zookeeper Run a Zookeeper server
rest Run an HBase REST server
thrift Run the HBase Thrift server
thrift2 Run the HBase Thrift2 server
clean Run the HBase clean up script
classpath Dump hbase CLASSPATH
mapredcp Dump CLASSPATH entries required by mapreduce
pe Run PerformanceEvaluation
ltt Run LoadTestTool
version Print the version
CLASSNAME Run the class named CLASSNAME
如何发出subprocess命令?
2条答案
按热度按时间lstz6jyr1#
如果您需要从python访问hbase,我强烈建议您查看happybase模块。
在过去的4年里,我一直在生产中使用它们,它们简化了我们的etl任务。
开箱即用的是Python2.x,但是只需要几分钟的工作,您就可以将它们升级到Python3(如果您的数据是utf-8,则很有用)
00jrzges2#
想办法了。我创建了一个shell文件,其中包含如下命令:
用python运行这个。