最近开发了几个对集群做文件操作的模块,都是基于python(2.7)。下面记录一下对hdfs做文件操作的模块,贴出部分代码。
1. pyhdfs(PyHDFS-0.1.2.tar.gz), 依赖包
requests
simplejson
2. 代码及解说
因为之前没有判断把文件写到hdfs后的执行结构,下一步就直接将文件移走了,会造成在写hdfs时,报找不到本地文件的错;
pyhdfs实际上是用requests的方式进行的http命令执行,本来想直接找找看pyhdfs本身有没有self.reponse可以用来判断执行结果,无奈没找到可以用的,就自己改了pyhdfs的create函数,让它返回执行结果,再通过这个执行结果去判断put文件是否成功,成功后再执行下一步,之后就没有报这个错误了。
import os
from base.log import logger
from base import application as app
from base.utility import scan_files, trans_bool
import pyhdfs
################################################################################
@app.application('hdfswriter', '/usr/etl-tools')
@logger('hdfswriter', app.Application)
class HdfsWriter(app.Application):
def __init__(self, config_cls, argv):
super(HdfsWriter, self).__init__(config_