我在hdfs中有一个shell命令,它在shell脚本中工作。我想转换该命令,以便它可以在python脚本中执行

时间:2016-02-11 09:48:32

标签: python

Shell脚本命令是: hadoop fs -ls /user/hive/warehouse/mashery_db.db/agg_per_mapi_stats_five_minutes/ |排序| awk'{if(index($ 8,“。hive”)== 0&& $ 6< =“'”delete_up_to_epoch_date“'”&& $ 7< =“'”delete_up_to_epoch_hour:00“'”)打印$ 8}'          + str(date_from).zfill(2)+'*'

基本上我想用python脚本执行。

2 个答案:

答案 0 :(得分:1)

基本上你可以打开一个管道来执行你的命令。

import os

p = os.popen("YOUR_COMMAND")

答案 1 :(得分:0)

https://pypi.python.org/pypi/python-hdfs/

import pyhdfs
from operator import itemgetter

fs = pyhdfs.connect('hostname', 12345)

path = '/user/hive/warehouse/mashery_db.db/agg_per_mapi_stats_five_minutes/'

for f in sorted(fs.listdir(path), key=itemgetter('name')):
    # {kind, name, last_mod, size, replication, block_size, owner, group, permissions, last_access}
    is_hive = f['name'].endswith('.hive')
    is_old_enough = f['last_mod'] <= delete_up_to_in_right_format
    if is_hive and is_old_enough:
        print f['name']+str(date_from).zfill(2)+ '*'

我没有完全获得最后的str(date_from).zfill(2) - 这不是有效的shell