在平时python的使用过程中,难免会遇到调用服务器命令的时候。直接调用普通的命令基本上都没有什么问题,令人比较麻烦的是带有控制台的命令,例如python、beeline、spark-shell。虽然向python、spark都有相关的脚本文件或者jar来避免直接使用控制台命令的调用,然后有些时候还是不免会用到控制台的方式,那么对于带有控制台的命令行应该如何实现呢?本文将使用subprocess,并以beeline为背景来实现使用python执行带有控制台的命令行命令。
首先看看参考代码,代码是以执行Hive的beeline命令行为例:
该代码块的主要流程是,在初始化beeline对象时调用beeline命令,并进行连接(init方法中实现了全部的操作);然后是提交需要beeline执行的sql(submit方法中实现);最后是将sql执行的结果从HDFS中取到本地(hadoop_get方法中实现)。queryDataByData方法就是对beeline类中各个方法的一个集成调用。